Пятница, 19 Апреля 2024, 09:04

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Мышка в 3Д пространстве (помогите)
Мышка в 3Д пространстве
allodsДата: Воскресенье, 21 Апреля 2013, 23:13 | Сообщение # 1
почти ветеран
Сейчас нет на сайте
Привет, нужна помощь
Вот мой код

Код

var unite01 : GameObject;
function Update () {

var ray = Camera.main.ScreenPointToRay(Input.mousePosition);

var hit : RaycastHit;

     

if(Physics.Raycast(ray, hit, 500))

{

     if(Input.GetMouseButtonDown(0))
     {
       var newUnit = Instantiate(unite01, hit.point, transform.rotation);
       Destroy(gameObject);
     }

     transform.position.x = hit.point.x;
     transform.position.z = hit.point.z;
     transform.position.y = 0;
     }

}


Когда я жму на кнопку(ее тут нет и проблема не в этом) то появляется gameObject
Но нужно чтобы он был привязан к мышке. Он то двигается с мышкой но проблема что мышка не указывает в землю. Наш gameObject на земле но мышка высоко над ним.
Мне надо при клике добавить юнита там где мышка. Но проблема опять в том что мышка находится в высоте. Надо как все ровно что поставить строение в стратегии, наше строение прикреплено к мышке но и находится в нужном месте на земле. Кто может сказать в чем проблема

Спасибо

Добавлено (21.04.2013, 21:25)
---------------------------------------------
Если коротко то мне нужно получить координаты мышки на земле

Добавлено (21.04.2013, 21:59)
---------------------------------------------
Сделал так

Код

var unite01 : GameObject;
function Update ()  
{
     var plane = Plane(transform.position, Vector3.up);
     var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
     var distance: float;
     if (plane.Raycast(ray, distance)){
     var hitPoint = ray.GetPoint(distance);
     transform.position=hitPoint;
      
      if(Input.GetMouseButtonDown(0))
      {
       var newUnit = Instantiate(unite01, hitPoint, transform.rotation);
       Destroy(gameObject);
       
         
      }
     }
}

уже луче но GameObject дергается то в верх то в низ пока я вожу мвшкой

Добавлено (21.04.2013, 23:13)
---------------------------------------------

Код

var unite01 : GameObject;
var smooth:int;
private var targetPosition:Vector3;
   
function Update () {
   
var playerPlane = new Plane(Vector3.up, transform.position);
var ray = Camera.main.ScreenPointToRay (Input.mousePosition);  
var hitdist = 0.0;
                
if (playerPlane.Raycast (ray, hitdist)) {
   
       var targetPoint = ray.GetPoint(hitdist);
   
       targetPosition  = ray.GetPoint(hitdist);
   
       var targetRotation = Quaternion.LookRotation(targetPoint - transform.position);

       if(Input.GetKeyDown(KeyCode.Mouse0))
   
       {
         var newUnit = Instantiate(unite01, targetPosition, targetRotation);
      Destroy(gameObject);   
   
       }
              transform.position.x = targetPosition.x;   
              transform.position.z = targetPosition.z;  
              transform.position.y = 0;   
              transform.rotation = targetRotation;  
  }

}

все получилось


Сообщение отредактировал allods - Воскресенье, 21 Апреля 2013, 20:44
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Мышка в 3Д пространстве (помогите)
  • Страница 1 из 1
  • 1
Поиск:

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