Intancias
2 participantes
Página 1 de 1
Intancias
Olá gente tudo bem, bom sou novo na unity, e por isso queria saber se podem me ajudar com um problema que estou tendo em um jogo que eu to tentando criar...
- Código:
public class Movimentação: MonoBehaviour
{
public float speed = 5f;
private Rigidbody2D playerRb;
Vector2 movimento;
public GameObject cameraPos, player, redDoor;
public Collider2D colisor;
void Start()
{
redDoor = GameObject.Find("RedDoor");
player = GameObject.Find("Player");
cameraPos = GameObject.Find("Main Camera");
playerRb = player.GetComponent<Rigidbody2D>();
Physics2D.IgnoreCollision(player.GetComponent<Collider2D>(), redDoor.GetComponent<Collider2D>());
}
void Update()
{
movimento.x = Input.GetAxisRaw("Horizontal");
movimento.y = Input.GetAxisRaw("Vertical");
if (player.transform.position.y <= -1 || player.transform.position.y >= 6)
{
cameraPos.transform.position = new Vector3(cameraPos.transform.position.x, cameraPos.transform.position.y, cameraPos.transform.position.z);
}
else
{
cameraPos.transform.position = new Vector3(cameraPos.transform.position.x, player.transform.position.y, cameraPos.transform.position.z);
}
}
private void FixedUpdate()
{
playerRb.MovePosition(playerRb.position + (speed * Time.fixedDeltaTime * movimento));
}
private void OnTriggerEnter2D(Collider2D col)
{
colisor = col;
FindObjectOfType<GameObject>().GetComponent<Sprites>().Teste();
}
}
- Código:
public class Sprites : MonoBehaviour
{
public String tagPorta;
bool spriteAtivada;
GameObject background;
public GameObject porta1, porta2;
public Sprite sprite, sptPorta1, sptPorta2;
private void Start()
{
spriteAtivada = false;
background = GameObject.Find("Background");
}
public void Teste()
{
if (GetComponent<Movimentação>().colisor.CompareTag(tagPorta) == true && spriteAtivada == false)
{
background.GetComponent<SpriteRenderer>().sprite = sprite;
porta1.GetComponent<SpriteRenderer>().sprite = sptPorta1;
porta2.GetComponent<SpriteRenderer>().sprite = sptPorta2;
spriteAtivada = true;
}
}
}
JoaoVitwoh- Iniciante
- PONTOS : 840
REPUTAÇÃO : 2
Respeito as regras :
Re: Intancias
voce não precisa criar uma nova instancia da classe, porque voce utiliza elementos publicos já alterados e prontos no editor, então, tudo que voce precisa fazer é apenas referenciar a classe ja pronta.
Caso prefira fazer isso de forma dinamicamente:
E então, quando quiser chamar a função presente no segundo, basta utilizar:
- Código:
//No script 1
public Sprites _sprites; //referencie o GameObject que contém este script
Caso prefira fazer isso de forma dinamicamente:
- Código:
_sprites = (Sprites)FindObjectOfType(typeof(Sprites));
E então, quando quiser chamar a função presente no segundo, basta utilizar:
- Código:
_sprites.Teste();
Pokedlg- ProgramadorMaster
- PONTOS : 2340
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Intancias
Obrigado deu certo.Pokedlg escreveu:voce não precisa criar uma nova instancia da classe, porque voce utiliza elementos publicos já alterados e prontos no editor, então, tudo que voce precisa fazer é apenas referenciar a classe ja pronta.
- Código:
//No script 1
public Sprites _sprites; //referencie o GameObject que contém este script
Caso prefira fazer isso de forma dinamicamente:
- Código:
_sprites = (Sprites)FindObjectOfType(typeof(Sprites));
E então, quando quiser chamar a função presente no segundo, basta utilizar:
- Código:
_sprites.Teste();
JoaoVitwoh- Iniciante
- PONTOS : 840
REPUTAÇÃO : 2
Respeito as regras :
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos