Пауза коллайдера в Unity - PullRequest
       22

Пауза коллайдера в Unity

0 голосов
/ 30 сентября 2019

Мне бы хотелось, чтобы коллайдер был приостановлен на несколько секунд в начале игры. Я использую этот скрипт на объекте. Спасибо.

 public class PickUpObject : MonoBehaviour {

void OnCollisionEnter (Collision Col)
{

    if (Col.gameObject.name== "Player")
    {
        Debug.Log("collision detected");

        Destroy(gameObject);

    }
}
}

Ответы [ 4 ]

1 голос
/ 30 сентября 2019

Используйте таймер, чтобы проверить это.

public class PickUpObject : MonoBehaviour {
    public float timer = 10f; //seconds

    private void Update()
    {
        timer -= Time.deltaTime;
    }
    void OnCollisionEnter (Collision Col)
    {
        if (Col.gameObject.name== "Player" && timer <= 0f)
        {
            Debug.Log("collision detected");

            Destroy(gameObject);

        }
    }
}
0 голосов
/ 01 октября 2019
public class PickUpObject : MonoBehaviour {

    public float delayTime = 2.0f;
    public float currentTime = 0.0f;

    private void Update()
    {
        currentTime += Time.deltaTime;
    }
    void OnCollisionEnter (Collision Col)
    {
        if (Col.gameObject.name== "Player" && currentTime > delayTime)
        {
            delayTime += currentTime;

            Destroy(gameObject);

            delayTime -= currentTime;
            currentTime = 0.0f;

        }
    }
}
0 голосов
/ 01 октября 2019

Мой предпочтительный метод - установить переменную _startTime во время начала сцены, а затем использовать ее для проверки при необходимости, а не увеличивать значение каждого кадра в методе Update.

private float _delay = 2f;
private float _startTime;

private void Start()
{
    _startTime = Time.time;
}   

void OnCollisionEnter (Collision col)
{
    if(Time.time - _startTime < _delay)
    {
        //Exit if the time passed is less than the _delay
        return;
    }
    //Else run check against player
    if (col.gameObject.name == "Player")
    {
        Debug.Log("collision detected");

        Destroy(gameObject);

    }
}
0 голосов
/ 30 сентября 2019

Вы можете использовать https://docs.unity3d.com/ScriptReference/Time-realtimeSinceStartup.html и проверить, больше ли это 5: D

...