движение в точку

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

движение в точку

Сообщение underground 25 мар 2010, 15:16

очень прошу помочь новичку( :ymparty: )
нужно сделать чтобы в месте клика (я так думаю что на плоскости) создавалась точка
далее игрок должен повернуться к этой точке и двигаться к ней и по достижении остановиться
очень надеюсь на помощь (если это вообще возможно реализовать) :-o
underground
UNец
 
Сообщения: 2
Зарегистрирован: 25 мар 2010, 14:40

Re: движение в точку

Сообщение Paul Siberdt 25 мар 2010, 15:30

Боюсь, в ближайшие десятилетия не возникнет технологий пассивного ментального воздействия на игрока, чтобы он по команде шел в заданную точку. Но с игроком вполне можно договориться... ну, или применить насилие или угрозу против него.

Или вы имели в виду персонажа игры?
Тогда необходимо в момент клика мышкой трассировать лучик из точки клика в системе координат камеры вперед по направлению ее взгляда и определять точку пересечения этого лучика с плоскостью. Далее, нужно запустить механизм передвижения персонажа в полученную точку (согласно механике вашего персонажа).

Изучаем справки документации по RayCast, Transform, Vector3
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: движение в точку

Сообщение Xela 26 мар 2010, 17:37

Xela
UNец
 
Сообщения: 22
Зарегистрирован: 11 авг 2009, 21:48

Re: движение в точку

Сообщение andoriyu 28 мар 2010, 03:32

Вот мой кусок кода:
Синтаксис:
Используется javascript
var obj:Transform;
var hit:RaycastHit;
var move: boolean = false;
var moveSpeed:float;
var moveTime:float;
private var startTime:float;
var rayCastPlane : Transform;
var speed : float =25;

function Awake () {
        Debug.Log(GlobalClass.current_session);
        transform.position = Vector3(GameObject.Find("var").GetComponent(GlobalClass).x_coordinate, GameObject.Find("var").GetComponent(GlobalClass).y_coordinate, GameObject.Find("var").GetComponent(GlobalClass).z_coordinate);
}
function Update () {
        if (Input.GetButtonDown ("Fire1"))
        {
                var ray = Camera.main.ScreenPointToRay (Input.mousePosition);
                if (Physics.Raycast (ray, hit, 10000)) {
                        move =true;
                        startTime=Time.time;
                }
        }
        if(move){
                var curTime = Time.time;
                var elapsedTime = curTime - startTime;
                var amountToMove = elapsedTime / moveTime;
                var wantedPosition= Vector3(hit.point.x, 1, hit.point.z);
                transform.Find("Compas").LookAt(wantedPosition);
                transform.Translate(Vector3.forward * Time.deltaTime, transform.Find("Compas"));
                var camera = GameObject.FindWithTag("MainCamera");
                //camera.transform.Translate(Vector3.forward * Time.deltaTime, transform.Find("Compas"));
                if(Vector3.Distance(transform.position, wantedPosition) < 0.5){
                        move = false;
                }
        }
        }


Ходит по клику. Compas это невидимый объект в ногах 2д спрайта, если у вас 3д объект то можно относительно себя двигаться.

p.s.
тут много лишних переменых
andoriyu
UNец
 
Сообщения: 30
Зарегистрирован: 10 мар 2010, 10:00


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

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

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