Кое-как я смог реализовать подсчёт счёта и движение по бокам. Но возникла проблема: после "смерти" персонажа счёт продолжает идти, пока не перезапустится уровень, и, хоть я и прекратил движение прямо, по бокам я не смог от него избавиться. Выходит так, что после того как я врезался, счёт продолжает начисляться и ещё я имею возможность просто перемещать игрока вправо/влево.
Как сделать после столкновение с коллайдером остановку счёта и убрать возможность передвигать персонажа влево/вправо?
Необходимый код для понимания:
spoiler// Начисление счёта
private float timerScore = 0.1f;
private float timerScore_;
void Start()
{
timerScore_ = timerScore;
}
void Update()
{
score.text = "" + scoreCounter; // выводит счёт
}
void FixedUpdate() {
if (timerScore > 0) {
timerScore -= Time.deltaTime;
}
else {
timerScore = timerScore_;
instance.AddScore(); //прибавляем счёт
}
}
public void AddScore() {
scoreCounter++;
}
//Движение персонажа вбок
Ray ray = cam.ScreenPointToRay(Input.mousePosition);
if (Input.GetKey(KeyCode.Mouse0))
{
transform.position = Vector3.MoveTowards(transform.position, new Vector3(transform.position.x,
transform.position.y, ray.origin.z), mouseSpeed * Time.deltaTime);
}
//Реализация столкновение игрока с коллайдером
void OnCollisionEnter(Collision wall) {
if (wall.gameObject.tag == "Respawn") { // check whether you hit the wall
animator.SetTrigger("death");
ResetSpeed();
ResetMove();
Invoke("ReloadLevel", 2.5f); // reload level in 2.5s
}
}
void ResetSpeed() {
zSpeed = 0;
}
void ResetMove() {
//Здесь хотел реализовать прекращение движение вправо/влево, возможно, не правильно
}