Пытаюсь написать простой скрипт для управления объектом, но не работает последняя часть кода
private Rigidbody playerRb;
public float speed = 4f;
public float jumpForce = 12;
public float gravityModifier;
public bool isOnGround = true;
public bool gameOver = false;
public float verticalInput;
public float horizontalInput;
public float zUpperBound = 1.3f;
public float zLowerBound = -1.3f;
private float xBound = 10;
// Start is called before the first frame update
void Start()
{
playerRb = GetComponent<Rigidbody>();
Physics.gravity *= gravityModifier;
}
// Update is called once per frame
void Update()
{
if(Input.GetKeyDown(KeyCode.Space) && isOnGround && !gameOver)
{
playerRb.AddForce(Vector3.up * jumpForce , ForceMode.Impulse);
isOnGround = false;
}
verticalInput = Input.GetAxis("Horizontal");
transform.Translate(Vector3.forward * Time.deltaTime * verticalInput * speed);
if (transform.position.z < zLowerBound)
{
transform.position = new Vector3(transform.position.x, transform.position.y, zLowerBound);
}
if (transform.position.z > zUpperBound)
{
transform.position = new Vector3(transform.position.x, transform.position.y, zUpperBound);
}
}
private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("Ground"))
{
isOnGround = true;
}
}
public void GameOver()
{
if(transform.position.x > xBound && !gameOver)
{
gameOver = true;
Debug.Log("Game Over!");
}
}
после того как позиция игрока становится больше заданной границы ничего не происходит. НО! Когда я вставляю последние три строки кода в метод Update все работает как надо. Я уже менял доступ своего метода GameOver и на public и на private, ошибки программа не выдаёт
Источник: Stack Overflow на русском