Есть код:
if (Input.GetKey(KeyCode.D))
{
tempPos.z = tempPos.z * speed * Time.deltaTime;//изменяем позицию игрока
Newpos = tempPos.z;
hero.transform.position = new Vector3(tempPos.x,tempPos.y,Newpos);
}
где:
public CharacterController hero;
public float speed=2;
Vector3 tempPos;
// Use this for initialization
void Start () {
hero = gameObject.GetComponent<CharacterController>();
}
// Update is called once per frame
void Update()
{
tempPos = hero.transform.position;//получаем позицию игрока
float Newpos;//Поле, в которое попадут координаты преобразованные в число типа float
float CorrentPos=transform.position.x;
.......
}
Вот в чем вопрос почему , когда я нажимаю клавишу D, у меня персонаж дергается долю секунжы - т.к в это время поле
Z компоненты transform? которое изначально имеет значение -1.02 т.е это позиция персонажа на сцене ведет себя следующим образом
- -1.02
- -4.603179e-18
- -1.652926e-25
- -7.104583e-43
- 0
- довольно странная последовательностью никакой закономерности я выявить не могу. И сомое интерестное, что когда доходит до нуля - остаавливается т.е не становится отрицательным.
Причем аналогичный метод для клавиши W работает нормально
if (Input.GetKey(KeyCode.W))
{
tempPos.x = tempPos.x * speed * Time.deltaTime;//изменяем позицию игрока
Newpos = tempPos.x;
hero.transform.position =
Vector3.MoveTowards(transform.position, //Переместить из текущего положения
new Vector3(Newpos, hero.transform.position.y, hero.transform.position.z)/*нам нужно изменить только x координату*/ , speed); //перемещаем игрока в новую позицию
}
Может у перемещения в сторону полностью друной принцип и я зря скопировал код клаваиши W в надежде его "немножко подправить" ?
Может кто что знает? Заранее спасибо?