Страница 1 из 1

Bird

СообщениеДобавлено: 20 янв 2018, 19:58
chiefPAIN
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class BirdScript : MonoBehaviour
{

    // Эта глобальная переменная будет установлена из инспектора. Представляет силу прыжка пртицы.
    public Vector2 jumpForce = new Vector2();
    public GameObject pLost;
    public GameObject bird;

    void Start()
    {
        // Добавляем птицу
        transform.position = new Vector2(-2f, 0f);
    }

    void Update()
    {
        // Ожидания тапа
        if (Input.anyKeyDown)
        {
            // Установка скорости rigid body птицы равной нулю
            GetComponent<Rigidbody2D>().velocity = Vector2.zero;
            // Добавление силы прыжка к rigid body птицы
            GetComponent<Rigidbody2D>().AddForce(jumpForce);
        }
        if(bird.transform.position.x == 0)
        {
            Die();
        }
    }
    void OnTriggerEnter()
    {
        Destroy(gameObject);
    }

    void Die()
    {
        //  Уничтожает птицу и вызывает панель проигрыша
        Destroy(gameObject);
        pLost.SetActive(true);
    }
}



По задумке, птица при соприкосновении с препятствием/уходе со сцены должна уничтожаться, но этого не происходит
Что может быть не так?

Re: Bird

СообщениеДобавлено: 20 янв 2018, 20:26
seaman
По уходу со сцены - не проверяйте позицию на равенство, проверяйте на < или >
По коллизии. На птице Rigidbody есть?

Re: Bird

СообщениеДобавлено: 20 янв 2018, 20:35
chiefPAIN
seaman писал(а):По уходу со сцены - не проверяйте позицию на равенство, проверяйте на < или >
По коллизии. На птице Rigidbody есть?


Ригид бади 2д стоит, всё по дефолту.
Да, после ухода со сцены он удаляется.

Re: Bird

СообщениеДобавлено: 20 янв 2018, 22:11
samana
Во-первых метод OnTriggerEnter должен принимать параметр.
Во-вторых, если у вас 2d физика, то это должен быть метод OnTriggerEnter2D (https://docs.unity3d.com/ScriptReferenc ... ter2D.html)

Re: Bird

СообщениеДобавлено: 24 янв 2018, 13:04
Fehler
chiefPAIN писал(а):
Синтаксис:
Используется csharp
    void OnTriggerEnter()
    {
        Destroy(gameObject);
    }

    void Die()
    {
        //  Уничтожает птицу и вызывает панель проигрыша
        Destroy(gameObject);
        pLost.SetActive(true);
    }
 

По задумке, птица при соприкосновении с препятствием/уходе со сцены должна уничтожаться, но этого не происходит
Что может быть не так?

вы удаляете дважды один и тот же обьект
хотя не удаляете вовсе
Синтаксис:
Используется csharp
if(bird.transform.position.x == 0)
 

у вас птица падает не вниз а вбок? влево наврное

вот для тригерра
Синтаксис:
Используется csharp
void OnTriggerEnter2D(Collider2D other) {
        Destroy(other.gameObject);
    }

Re: Bird

СообщениеДобавлено: 25 янв 2018, 22:22
chiefPAIN
Fehler писал(а):
chiefPAIN писал(а):
Синтаксис:
Используется csharp
    void OnTriggerEnter()
    {
        Destroy(gameObject);
    }

    void Die()
    {
        //  Уничтожает птицу и вызывает панель проигрыша
        Destroy(gameObject);
        pLost.SetActive(true);
    }
 

По задумке, птица при соприкосновении с препятствием/уходе со сцены должна уничтожаться, но этого не происходит
Что может быть не так?



вы удаляете дважды один и тот же обьект
хотя не удаляете вовсе
Синтаксис:
Используется csharp
if(bird.transform.position.x == 0)
 

у вас птица падает не вниз а вбок? влево наврное



вот для тригерра
Синтаксис:
Используется csharp
void OnTriggerEnter2D(Collider2D other) {
        Destroy(other.gameObject);
    }

уже всё сделано