Перемещение ГО по клику мыши [Решено]

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Перемещение ГО по клику мыши [Решено]

Сообщение Behind1243 16 ноя 2011, 20:32

Собственно по теме. Как можно реализовать такое же движение героя, как во всех банальных RPG?
Последний раз редактировалось Behind1243 19 фев 2012, 11:16, всего редактировалось 3 раз(а).
Behind1243
UNец
 
Сообщения: 22
Зарегистрирован: 13 ноя 2011, 21:32

Re: Перемещение ГО по клику мыши

Сообщение seaman 16 ноя 2011, 21:36

1. Во всех "банальных" РПГ ГГ перемещается не по клику мыши, а клавишами wasd.
2. В Юнити это уже реализовано в ThirdPersonController.
3. Если же Вам все же нужно по клику мыши как в большинстве RTS, то ищите на форуме был пример.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Перемещение ГО по клику мыши

Сообщение Behind1243 17 ноя 2011, 20:25

Весь день фактически рыл форум и Google, ничего толкового так и не нашел. Может плохо искал...
По какому принципу можно реализовать движения? Может кто подтолкнет человека на путь истинный?)

Заранее благодарю.
Behind1243
UNец
 
Сообщения: 22
Зарегистрирован: 13 ноя 2011, 21:32

Re: Перемещение ГО по клику мыши [Актуально]

Сообщение seaman 17 ноя 2011, 21:02

Интересно почему я нашел вот это меньше чем за минуту:
http://unity3d.ru/distribution/viewtopic.php?f=18&t=2244&p=19054
Может потому что искал?
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Перемещение ГО по клику мыши [Актуально]

Сообщение Левш@ 17 ноя 2011, 22:54

По какому принципу можно реализовать движения? Может кто подтолкнет человека на путь истинный?)

Тыкаем мышей в террайн, получаем поинт, рендерим в точке кружочек (типа эффект), вычисляем направление (вектор) между ГГ и точкой, движемся к поинту.
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Перемещение ГО по клику мыши [Актуально]

Сообщение Behind1243 18 ноя 2011, 15:09

seaman писал(а):Интересно почему я нашел вот это меньше чем за минуту:
http://unity3d.ru/distribution/viewtopic.php?f=18&t=2244&p=19054
Может потому что искал?


Ну искал, не нашел, с каждым бывает)
Behind1243
UNец
 
Сообщения: 22
Зарегистрирован: 13 ноя 2011, 21:32

Re: Перемещение ГО по клику мыши [Актуально]

Сообщение Behind1243 18 ноя 2011, 22:38

И снова столкнулся с проблемой. Когда я тыкаю по террейну, он к этой точке направляется, НО он эту точку проходит. Плюс через некоторое время я проваливаюсь под землю. Вот собственно скрипт:

Синтаксис:
Используется javascript
public var speed : float = 5.0f;
public var col : Collider;
public var Waypoint : Transform;
var pos : Vector3;
var hit : RaycastHit;  
var rot : Vector3;

var character : Transform;
var went : boolean = false;

function Update () {

         var dist = Vector3.Distance(Waypoint.position, character.position);

         if (Input.GetMouseButtonDown(0)) {
             went = true;
             var ray : Ray = Camera.main.ScreenPointToRay (Input.mousePosition);

         if (col.Raycast(ray, hit, 150.0f)) {
            Debug.DrawLine (ray.origin, hit.point);
            pos = hit.point;
            Instantiate (Waypoint, hit.point, transform.rotation);
            transform.LookAt(hit.point);
            }
      }

         if (went) {
            transform.eulerAngles = new Vector3(rot.x, transform.eulerAngles.y, rot.z);
            transform.Translate(Vector3.forward * Time.deltaTime * speed);
      }

         if(dist <= 0.5) {
             went = false;
         }  
}


Снова прошу вашей помощи :(

Только не кидайтесь в меня тапками, пожалуйста :((
Behind1243
UNец
 
Сообщения: 22
Зарегистрирован: 13 ноя 2011, 21:32

Re: Перемещение ГО по клику мыши [Ещё актуально]

Сообщение Левш@ 18 ноя 2011, 23:46

transform.Translate(Vector3.forward * Time.deltaTime * speed);

Вместо этого метода нужно использовать ЧарКонтроллер.
Синтаксис:
Используется javascript
var flags = controller.Move(moveDirection * Time.deltaTime);

Это будет корректно отрабатывать коллизии с террайном.
+ надо мерять расстояние до точки и останавливать.
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Перемещение ГО по клику мыши [Ещё актуально]

Сообщение Behind1243 19 ноя 2011, 16:14

Спасибо, попробую и отпишусь)
Behind1243
UNец
 
Сообщения: 22
Зарегистрирован: 13 ноя 2011, 21:32

Re: Перемещение ГО по клику мыши [Ещё актуально]

Сообщение Rip 27 ноя 2011, 18:12

if(Vector3.Distance(transform.position,pos)<1.2)went=false;
у меня не доходит персонаж, а если сравнение поставить меньше, то он не остановится.
Изображение
Реальность существует независимо от вас, до тех пор пока вы с этим согласны.
Изображение
Аватара пользователя
Rip
UNIт
 
Сообщения: 103
Зарегистрирован: 30 янв 2010, 14:11
Откуда: Оренбугская обл. г.Орск
  • ICQ

Re: Перемещение ГО по клику мыши [Ещё актуально]

Сообщение Rip 30 ноя 2011, 21:52

Все решил! :D Конечно тупил я сам :p
Оказалось, дело в y.
Синтаксис:
Используется csharp
transform.LookAt(new Vector3(hit.point.x,transform.position.y,hit.point.z));
if(Vector3.Distance(transform.position,new Vector3(pos.x,
                 transform.position.y,pos.z))<Distance)went=false;
 

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


Вернуться в Почемучка

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

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