Я новичок, вопросов имею очень много, но на большинство из них уже получил ответы, изучив уроки и ваш замечательный форум.
Однако, сейчас есть проблема, которую не могу решить.
Имеется объект, который нужно переместить в отмеченное кликом мышки место. Но перемещение должно осуществляться после дополнительного подтверждения, то бишь кликнул куда надо идти, затем нажал кнопку "GO" и объект начал перемещаться. Все делаю, внимательно изучая имеющиеся уроки.
До того, как я вставил часть кода (ответственного за перемещение объекта) в функцию кнопки, объект перемещался нормально. Теперь же он перемещается не собственно в точку клика, а лишь на коротенький отрезок по направлению к этой точке. То есть в момент нажатия кнопки делает маленький шажок. Подскажите, как исправить?
[Unity3dPlayer]http://dc224.4shared.com/download/u6t3q9cp/webzp.unity3d[/Unity3dPlayer]
Скрипт, подвешенный на объект:
- Код: Выделить всё
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);
}
}
}
}