Вторник, 23 Апреля 2024, 10:03

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Продолжение движения и MoveTowards
Продолжение движения и MoveTowards
lakorisДата: Суббота, 12 Июля 2014, 18:58 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Есть 2 точки на карте. При опр. условии объект двигается из точки a в точку b, используя MoveTowards.
Когда объект достигает точки b, нужно каким-то образом продлить прямую, по которой он двигался, отталкиваясь только от этих двух точек.
Уверен, что-то подобное изучают в школе в классе в 10-11 на геометрии)
Помогите, пожалуйта.
ЛевшаДата: Суббота, 12 Июля 2014, 19:50 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
Взять за направление движения вектор b.position - a.position;

X.cor.R (Prologue)
lakorisДата: Суббота, 12 Июля 2014, 20:22 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
Левша, допустим, А = (-6; 5), B = (7; 2).
B - A = (13; 7).
Чтобы из а переместиться в б, нужно прибавить к А направление наше.
Но как быть мне? У меня другая задача немного.
berilДата: Суббота, 12 Июля 2014, 21:16 | Сообщение # 4
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
Цитата lakoris ()
B - A = (13; 7).

неправильно cool

transform.forward попробуй для движения вперед




Накодил? Убери за собой!
Инвентарь в Unity(UI)
Инвентарь в Unity(GUI)


Сообщение отредактировал beril - Суббота, 12 Июля 2014, 21:19
ЛевшаДата: Суббота, 12 Июля 2014, 21:16 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
Цитата lakoris ()
Левша, допустим, А = (-6; 5), B = (7; 2).
B - A = (13; 7).
Чтобы из а переместиться в б, нужно прибавить к А направление наше.
Но как быть мне? У меня другая задача немного.

Цитата Левша ()
Взять за направление движения вектор b.position - a.position;

Вы понятия не путайте... я вам четко указал как сохранить ваше направление - о чем вы собственно и спрашивали.
А потом вы начали оперировать позициями...
Vector3 - применительно к данной ситуации может выражать как позицию так и направление и это не есть одно и то же.
Так как Vector3 в нашем случае - есть тип данных. Как вы будете его применять - это уже ваши проблемы.
Соответственно получив правильное направление (b.position - a.position;) в начале движения и достигнув точки b.
Мы отказываемся от первичного метода MoveTowards (так как 2 точек у нас уже нет) и переходим к методу например - Translate, которому не нужно 2 точки, а нужно именно направление (которое у нас есть).
Способов решения данной задачи как и методов АПИ Юнити множество, я указал самый очевидный.

Цитата beril ()
transform.forward попробуй для движения вперед

Это только если обьект развернут *лицом - точно в сторону движения, а если нет ? Никто не уточнял...


X.cor.R (Prologue)

Сообщение отредактировал Левша - Суббота, 12 Июля 2014, 21:31
lakorisДата: Суббота, 12 Июля 2014, 22:56 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Левша, спасибо. все стало понятно!)

Добавлено (12.07.2014, 22:56)
---------------------------------------------
Левша, несколько странно:
если я за направление беру b - a, объект при достижении b начинает двигаться влево(примерно 50-60 градусов), если a - b - вправо.

ЛевшаДата: Воскресенье, 13 Июля 2014, 01:52 | Сообщение # 7
почти ветеран
Сейчас нет на сайте
Цитата
все стало понятно!)

Цитата
несколько странно:

Видимо все таки не все. smile
Распишите подробно что вы делаете.


X.cor.R (Prologue)
lakorisДата: Воскресенье, 13 Июля 2014, 02:04 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
Код
if(!s)
         transform.position = Vector3.MoveTowards(transform.position, needPos, Time.deltaTime * 20);
         else if(s){
             Vector3 e = needPos - startPos;
         transform.Translate(e * Time.deltaTime);
     }
ЛевшаДата: Воскресенье, 13 Июля 2014, 05:45 | Сообщение # 9
почти ветеран
Сейчас нет на сайте
Код

var moveSpeed : float = 20f;
var nedPos : Vector3;
private var moveDirection : Vector3;

function Start () {
         moveDir = needPos - transform.position;
}
function Update () {
         if (!s)  transform.position = Vector3.MoveTowards(transform.position, needPos, Time.deltaTime * moveSpeed);  
         else  transform.Translate(moveDirection * moveSpeed * Time.deltaTime);  
}


X.cor.R (Prologue)
lakorisДата: Воскресенье, 13 Июля 2014, 12:23 | Сообщение # 10
постоянный участник
Сейчас нет на сайте
Левша, Да, заработало)
Суть конкурса была в том, что брать надо не стартовую точку, а текущую позицию)
Цитата Левша ()
moveDir = needPos - transform.position;

Спасибо. плюс уже кинул)
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Продолжение движения и MoveTowards
  • Страница 1 из 1
  • 1
Поиск:

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