Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines
(1 edit)

Hrm. . . . I'm not sure. I use Unity / C#, and I've never used Godot before. But, here is how I would set it up for Unity:

  1. Depending on the game, I'd have a Rigidbody component either on the trigger GameObj or the player GameObj. Let's say it is on the player.
  2. Create a GameObj that has a Collider on it. *Make sure it is set to trigger!* That's important.
  3. Have a script with code (sorta like this) on the trigger GameObj:
[SerializeField] private float timer = 10f;
[SerializeField] private float timeForAnimation = 3f;
// State
private bool startTimer;
private void Update()
{
    if (startTimer)
    {
        timer -= Time.deltaTime;
        if (timer <= 0f)
        {
            GetComponent<Animator>().SetTrigger("Scare");
            Destroy(gameObject, timeForAnimation); // This could be extracted as a function to use as an anim event
        }
    }
}
private void OnTriggerEnter(Collider other)
{
    if (other.CompareTag("Player") && !startTimer)
    {
        startTimer = true;
    }
}