Продолжение движения и 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). неправильно
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 |
почти ветеран
Сейчас нет на сайте
| Цитата все стало понятно!) Видимо все таки не все. Распишите подробно что вы делаете.
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; Спасибо. плюс уже кинул)
|
|
| |