Скрипт, создающий объект
| |
Shagovevg | Дата: Понедельник, 23 Февраля 2015, 22:37 | Сообщение # 1 |
почетный гость
Сейчас нет на сайте
| Всем привет. Очень нужен скрипт, создающий игровой объект в месте клика мышью. Пространство 2д. Пожалуйста помогите.
|
|
| |
MANMANA | Дата: Вторник, 24 Февраля 2015, 00:52 | Сообщение # 2 |
почти ветеран
Сейчас нет на сайте
| как и в предыдущем посте http://answers.unity3d.com/questio....-i.html здесь вы уже знаете координаты клика мышью + Вам необходимо создать инстанс Игрового объекта http://docs.unity3d.com/ScriptReference/Object.Instantiate.html получается
Код using UnityEngine; using System.Collections; public class GotoMouse : MonoBehaviour { public Transform prefab;//for drag'n'drop your prefab in the Insperctor private Vector3 target; void Update () { if (Input.GetMouseButtonDown(0)) { target = Camera.main.ScreenToWorldPoint(Input.mousePosition); target.z = transform.position.z; } Instantiate(prefab, target, Quaternion.identity) as Transform;//создается инстанс префаба в месте клика мышью //или вместо последней строки //Transform clone;//имя для нового ГО // clone = Instantiate(prefab, target, transform.rotation) as Transform;//создание инстанса вашего префаба с новым именем 'clone' } }
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
|
|
| |
Shagovevg | Дата: Вторник, 24 Февраля 2015, 08:08 | Сообщение # 3 |
почетный гость
Сейчас нет на сайте
| Цитата MANMANA ( ) как и в предыдущем посте http://answers.unity3d.com/questio....-i.html здесь вы уже знаете координаты клика мышью + Вам необходимо создать инстанс Игрового объекта http://docs.unity3d.com/ScriptReference/Object.Instantiate.html получается Ошибка выходит - Assets/Scripts/GotoMouse.cs(13,78): error CS0201: Only assignment, call, increment, decrement, and new object expressions can be used as a statementДобавлено (24 февраля 2015, 08:04) ---------------------------------------------
Цитата MANMANA ( ) Instantiate(prefab, target, Quaternion.identity) as Transform;//создается инстанс префаба в месте клика мышью //или вместо последней строки //Transform clone;//имя для нового ГО // clone = Instantiate(prefab, target, transform.rotation) as Transform; Если вместо последней строчки: Transform clone;//имя для нового ГО clone = Instantiate(prefab, target, transform.rotation) as Transform; То в центре сцены начинает бесконечно спауниться выбранный префаб...Добавлено (24 февраля 2015, 08:08) ---------------------------------------------
Цитата MANMANA ( ) http://answers.unity3d.com/questio....-i.html Пробовал спросить на Unity Answers, но мой вопрос почему-то отклонили...
|
|
| |
aFriend | Дата: Вторник, 24 Февраля 2015, 15:10 | Сообщение # 4 |
участник
Сейчас нет на сайте
| Цитата using UnityEngine; using System.Collections;
public class GotoMouse : MonoBehaviour { public Transform prefab;//for drag'n'drop your prefab in the Insperctor private Vector3 target;
void Update () { if (Input.GetMouseButtonDown(0)) { target = Camera.main.ScreenToWorldPoint(Input.mousePosition); target.z = transform.position.z; } Instantiate(prefab, target, Quaternion.identity) as Transform;//создается инстанс префаба в месте клика мышью //или вместо последней строки //Transform clone;//имя для нового ГО // clone = Instantiate(prefab, target, transform.rotation) as Transform;//создание инстанса вашего префаба с новым именем 'clone' } } Конечно, он будет создаваться бесконечно, ведь создание обьекта находиться в Update() без всяких проверок, нужно его туда добавить: Код using UnityEngine; using System.Collections;
public class GotoMouse : MonoBehaviour { public Transform prefab; private Vector3 target;
void Update () { if (Input.GetMouseButtonDown(0)) { target = Camera.main.ScreenToWorldPoint(Input.mousePosition); target.z = transform.position.z; Instantiate(prefab, target, Quaternion.identity) as Transform; } } } Добавлено (24 февраля 2015, 15:10) --------------------------------------------- А вообще, тут слишком много кода, можно уменьшить
Сообщение отредактировал aFriend - Вторник, 24 Февраля 2015, 14:56 |
|
| |
Shagovevg | Дата: Вторник, 24 Февраля 2015, 20:09 | Сообщение # 5 |
почетный гость
Сейчас нет на сайте
| Цитата aFriend ( ) Код using UnityEngine; using System.Collections;
public class GotoMouse : MonoBehaviour { public Transform prefab; private Vector3 target;
void Update () { if (Input.GetMouseButtonDown(0)) { target = Camera.main.ScreenToWorldPoint(Input.mousePosition); target.z = transform.position.z; Instantiate(prefab, target, Quaternion.identity) as Transform; } } } Добавлено (24 февраля 2015, 15:10) --------------------------------------------- А вообще, тут слишком много кода, можно уменьшить Все равно выдается ошибка - Assets/Scripts/GotoMouse.cs(12,86): error CS0201: Only assignment, call, increment, decrement, and new object expressions can be used as a statement. Что нужно исправить, чтобы скрипт заработал?Добавлено (24 февраля 2015, 20:09) ---------------------------------------------
Код using UnityEngine;
using System.Collections;
public class mousecreate : MonoBehaviour { Ray ray; RaycastHit hit; public GameObject prefab; // Use this for initialization void Start () { } // Update is called once per frame void Update () { ray=Camera.main.ScreenPointToRay(Input.mousePosition); if(Physics.Raycast(ray,out hit)) { if(Input.GetKey(KeyCode.Mouse0)) { GameObject obj=Instantiate(prefab,new Vector3(hit.point.x,hit.point.y,0), Quaternion.identity) as GameObject; } } } } В общем. Сработал только этот код. Всем, кто пытался помочь, большое спасибо) + Если кому-то потребуется аналогичный скрипт, то в это посте находится код.
|
|
| |
|