Перемещение в место клика мыши с подтверждением

Программирование на Юнити.

Перемещение в место клика мыши с подтверждением

Сообщение mikita 24 июл 2010, 18:57

Здравствуйте
Я новичок, вопросов имею очень много, но на большинство из них уже получил ответы, изучив уроки и ваш замечательный форум.
Однако, сейчас есть проблема, которую не могу решить.
Имеется объект, который нужно переместить в отмеченное кликом мышки место. Но перемещение должно осуществляться после дополнительного подтверждения, то бишь кликнул куда надо идти, затем нажал кнопку "GO" и объект начал перемещаться. Все делаю, внимательно изучая имеющиеся уроки.
До того, как я вставил часть кода (ответственного за перемещение объекта) в функцию кнопки, объект перемещался нормально. Теперь же он перемещается не собственно в точку клика, а лишь на коротенький отрезок по направлению к этой точке. То есть в момент нажатия кнопки делает маленький шажок. Подскажите, как исправить?

[Unity3dPlayer]http://dc224.4shared.com/download/u6t3q9cp/webzp.unity3d[/Unity3dPlayer]

(c#)
Скрипт, подвешенный на объект:
Код: Выделить всё
using UnityEngine;
using System.Collections;

public class Control : MonoBehaviour
{
   public float speed = 5.0f;
   public Collider col;
   public Transform Podsvetka;
   
   Vector3 pos;
   RaycastHit hit;   
   Vector3 rot;
   
   void Update ()
   {

      // отметка координат в месте клика мыши
      if (Input.GetMouseButtonDown(0))
      {
         Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
         if (col.Raycast (ray, out hit, 100.0f))
         {
            Debug.DrawLine (ray.origin, hit.point);
            pos = hit.point;
            Instantiate (Podsvetka, hit.point, transform.rotation); // подсветка в точке клика
            transform.LookAt(hit.point);
         }
      }
   }
   
   void OnGUI()
   {
      if (GUI.Button(new Rect(10, 10, 80, 30), "- GO -"))
      {
         // перемещение в место клика
         if (Vector3.Distance(transform.position, pos) > 1f)
         {
            transform.eulerAngles = new Vector3(rot.x, transform.eulerAngles.y, rot.z);
            transform.Translate(Vector3.forward * Time.deltaTime * speed);
         }   
      }
   }
}
mikita
UNец
 
Сообщения: 3
Зарегистрирован: 24 июл 2010, 17:26

Re: Перемещение в место клика мыши с подтверждением

Сообщение Rip 24 июл 2010, 21:48

поставь в if (кнопка нажата) go=true;
if (go)
{
двигаем обект в точку;
if(обект.position==pos) go=false;// при достижении цели обнуляем.
}

в общем у тебя код движения выполняется на момент нажатия кнопки.
то есть 1 раз.
ЗЫ: syntax= а то не удобно читать.
Изображение
Реальность существует независимо от вас, до тех пор пока вы с этим согласны.
Изображение
Аватара пользователя
Rip
UNIт
 
Сообщения: 103
Зарегистрирован: 30 янв 2010, 14:11
Откуда: Оренбугская обл. г.Орск
  • ICQ


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5