iniciante em programação C, ajuda com lógica
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Bolinha : MonoBehaviour
{
private Rigidbody rig; /*RigidBody is a unity component that alows gameObjects to react a real time phisics. */
public float velocidade; /* This atribute will be set up inside the unity */
public float forcaPulo;
public bool estChao = false;
// Start is called before the first frame update
void Start()
{
rig = GetComponent<Rigidbody>(); /* this line i get the atribute from beginning and start to work with it from the update*/
}
// Update is called once per frame
void Update()
{
if (Input.GetKey(KeyCode.LeftArrow))
{
if (estChao)
{
rig.velocity = Vector3.left * velocidade * Time.deltaTime;
}
}
else if (Input.GetKey(KeyCode.RightArrow)) {
if (estChao)
{
rig.velocity = Vector3.right * velocidade * Time.deltaTime;
}
}
if (Input.GetKeyDown(KeyCode.Space)){
if (estChao) /*Por que só funciona com assim ?*/
{
rig.AddForce(Vector3.up * forcaPulo, ForceMode.Impulse);
estChao = false;
}
}
}
private void OnCollisionEnter(Collision colisor)
{
if (colisor.gameObject.layer == 9)
{
estChao = true;
}
}
} Eu gostaria de entender o seguinte.. Se eu setei fora da classe a variavel booleana como false e eu deixar dentro de um if como if (estChao)
{}
sem dizer dentro do if se é true ou false, ele entenderá como, que ele esta com o mesmo valor fora da classe ? pq se eu deixar dentro do if como true ou false, ele n executa mais... To estudando design de games, e meio q a mecanica n funciona se eu mudar o valor dentro do if
Weslley Felix
Curtidas 2
Respostas
Jonas Ferraz
10/04/2020
A variável booleana estChao está sendo declarada dentro da classe com o valor false. Ou seja, todas as vezes que a classe for instanciada (criada: Bolinha b = new Bolinha()), o valor de estChao nessa nova instância será false. Até que ele seja alterado.
Nesse caso, há duas linhas atribuindo valores a estChao: a linha 41 e a linha 51. Então esse if receberá o valor que a variável tiver naquele momento.
O motivo do if é esse mesmo: como o próprio nome diz, ela é uma variável, então seu valor vai mudar durante a execução do código. É por isso que o if está aí: o que estiver dentro dele só vai ser executado SE (ou IF) o valor de estChao for true (verdadeiro). Se você mudar o que estiver dentro do if para true ou false estará quebrando essa verificação, e é por isso que o jogo deixa de funcionar.
Espero ter ajudado!
Nesse caso, há duas linhas atribuindo valores a estChao: a linha 41 e a linha 51. Então esse if receberá o valor que a variável tiver naquele momento.
O motivo do if é esse mesmo: como o próprio nome diz, ela é uma variável, então seu valor vai mudar durante a execução do código. É por isso que o if está aí: o que estiver dentro dele só vai ser executado SE (ou IF) o valor de estChao for true (verdadeiro). Se você mudar o que estiver dentro do if para true ou false estará quebrando essa verificação, e é por isso que o jogo deixa de funcionar.
Espero ter ajudado!
GOSTEI 0