Вторник, 23 Апреля 2024, 11:11

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Скрипт, создающий объект (в месте щелчка мышью)
Скрипт, создающий объект
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;
      
    }
     
   }
    
    
    
  }
}

В общем. Сработал только этот код. Всем, кто пытался помочь, большое спасибо) + Если кому-то потребуется аналогичный скрипт, то в это посте находится код.
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Скрипт, создающий объект (в месте щелчка мышью)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг