Это не работает не значит много.Это сбой, показывая ошибку, не двигаясь, двигаясь куда-то еще, чем ожидалось?
Я предполагаю, что переменная local
является направлением (так почему бы не назвать его direction
?).То, как вы рассчитываете, кажется правильным.Вы можете упростить код, заменив
var local = new Vector3(0,0,0);
local = dummy.transform.position - transform.position;
на
var local = dummy.transform.position - transform.position;
Если он работает с клавиатурой, большая часть кода должна быть правильной.Если ваш персонаж движется слишком быстро, вы можете попытаться нормализовать вектор направления
local = (dummy.transform.position - transform.position).normalized;
Если он не двигается или не показывает ошибку, возможно, фиктивная фигура установлена неправильно.Видите ли вы ожидаемую позицию, если вы делаете
Debug.Log(dummy.transform.position)
Редактировать: Вы также можете попытаться проверить правильность направления, добавив
Debug.DrawLine(transform.position, transform.position + local)