По нажатию клавиши задача выполняется прерываниями UNITY3d
Пишу код, возникла проблема, когда нужно переместить персонажа на 1 таил я нажимаю кнопку пробел один раз, и он лишь немного меняет положение, как исправить чтобы по нажатию он сделал передвижение полностью?
using UnityEngine;
public class PlayerControler : MonoBehaviour {
public float MoveSpeed = 1.5f;
public int RotateStage = 0;
private void Update() {
Vector3 To;
if(Input.GetKeyDown(KeyCode.Q)){
if(RotateStage <= 2){ RotateStage = RotateStage + 1; }else{ RotateStage = RotateStage = 0; }
}
if(Input.GetKeyDown(KeyCode.E)){
if(RotateStage >= 1){ RotateStage = RotateStage - 1; }else{ RotateStage = RotateStage = 3; }
}
if(Input.GetKeyDown(KeyCode.Space)){
To = transform.position;
if(RotateStage == 0){
To.x = To.x + 1;
}
if(RotateStage == 1){
To.y = To.y + 1;
}
if(RotateStage == 2){
To.x = To.x - 1;
}
if(RotateStage == 3){
To.y = To.y - 1;
}
transform.position = Vector3.Lerp(transform.position, To, MoveSpeed * Time.deltaTime);
To.x = 0; To.y = 0;
}
}
}
Ответы (1 шт):
Автор решения: zhenyaxxo
→ Ссылка
Изначально у тебя не правильный подход, ты с помощью if уже меняешь позицию объекта, так как To = transform.position. Создай приватное поле Vector3 и задавай уже ему все что тебе хочется.
private Vector3 to;
private void Start(){
to = transform.position;
}
private void Update(){
if(Input.GetKeyDown(KeyCode.Space)){
if(RotateStage == 0){
To.x = To.x + 1;
}
if(RotateStage == 1){
To.y = To.y + 1;
}
if(RotateStage == 2){
To.x = To.x - 1;
}
if(RotateStage == 3){
To.y = To.y - 1;
}
}
transform.position = Vector3.Lerp(transform.position, To, MoveSpeed * Time.deltaTime);
}