Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Tempo não funciona para todos objetos na colisão

Olá,

Estou criando uma versão do flappy bird com diferentes assets mas também estou seguindo as instruções do instrutor estreitamente, porem estou tendo problemas na hora da colisão do objeto e então o tempo será pausado.

Troquei o aviao por uma Ovelha (haha) e nesse momento que colide com a barreira, ela a atravessa e a barreira continua andando de encontro com o final da minha cena.

Entretanto eu sei que o código está fucionando, por que a minha ovelha para de funcionar e as barreiras param também de ser geradas, pois o meu unico problema é o fato de barreiras que foram geradas antes da colisão continuarem funcionando.

Codigo do tempo.

public class TimeController : MonoBehaviour
{

    public void endGame() {

        Time.timeScale = 0;

    }

}

Codigo da minha Ovelha.

public class SheepImpulse : MonoBehaviour
{
    private Rigidbody2D impulse;

    [SerializeField]
    private float impulseUp;

    private TimeController timeManager;

    private void Awake()
    {
        impulse = GetComponent<Rigidbody2D>();
        timeManager = GameObject.FindObjectOfType<TimeController>();
    }

    void Update(){
        if (Input.GetKeyDown("space")) {
            spaceImpulse();
        }
    }

    private void spaceImpulse()
    {

        impulse.velocity = Vector2.zero;
        impulse.AddForce(Vector2.up * impulseUp, ForceMode2D.Impulse);
    }

    private void OnCollisionEnter2D(Collision2D collision)
    {
        impulse.simulated = false;
        timeManager.endGame();
    }



}
2 respostas

Oi Vitor, tudo bom?

Vc comentou que são as barreiras que não estão parando de andar ne? Vc tem o código delas ai? O da ovelha parece correto mesmo.

solução!

Estou recebendo uma mensagem de Warning! Eu nao sei o que esta dando de errado, já deletei o prefab e adicionei novamente também. Se vou alterar o prefab, recebo a mensagem que nao posso alterar.

[EDITADO] Por alguma razão que não consigo entender, o meu RigidBody2D estava com algum problema que não sei explicar, pois o tinha configurado da mesma forma do video. Então o deletei, criei e configurei novamente da mesma forma do video e agora funciona perfeitamente.

Obrigado pela atenção.

The referenced script(Unknown) on this Behaviour is missing!
UnityEngine.Object: Instantiate(GameObject, Vector3, Quaternion)

The referenced script(Game Object 'obstacle(1)' is missing!)on this Behaviour is missing!
UnityEngine.Object: Instantiate(GameObject, Vector3, Quaternion)


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ObstacleTranslate : MonoBehaviour
{
    [SerializeField]
    private float speed;

    [SerializeField]
    private float axisY;

    private Rigidbody2D obstacle;
    private Vector3 sheepPosition;
    private bool scored;
    private Points points;



    private void Awake()
    {
        transform.Translate(Vector3.up * Random.Range(-axisY, axisY));
        obstacle = GetComponent<Rigidbody2D>();
        points = GameObject.FindObjectOfType<Points>();
    }

    private void Start()
    {
        sheepPosition = GameObject.FindObjectOfType<SheepImpulse>().transform.position;

        if (!scored && transform.position.x < sheepPosition.x) {
            scored = true;

            points.addPoints();
        }
    }

    private void Update()
    {
        this.transform.Translate(Vector3.left * speed);     
    }

    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.tag == "wall")
        {
            destroy();
        }

    }

    public void destroy()
    {
            GameObject.Destroy(this.gameObject);

    }




}

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software