A sandbox game component that listens for trigger collisions on a BoxCollider. It enables the collider after a delay, checks entering objects for "friendly" and "player" tags, and calls a linked CollisionHandler.StartDeathSequence when a player collides.
using Sandbox;
using System.Reflection.Metadata.Ecma335;
public sealed class CornCollision : Component, Component.ITriggerListener
{
[Property] public SkinnedModelRenderer model { get; set; }
[Property] public Rigidbody rb { get; set; }
[Property] int levelLoadDelay = 2000;
[Property] public SoundEvent death { get; set; }
[Property] public GameObject visibleVar;
[Property] static Scene ActiveScene { get; set; }
[Property] public string[] Tags { get; set; } = { "friendly", "player" };
[Property] public ParticleSphereEmitter Feathers { get; set; }
[Property] public CollisionHandler chicken { get; set; }
[Property] public BoxCollider CornCollider;
async protected override void OnStart()
{
await Task.Delay( levelLoadDelay );
CornCollider.Enabled = true;
}
async void ITriggerListener.OnTriggerEnter( Collider collision )
{
if ( collision.GameObject.Tags.Has( "friendly" ) )
{
}
if ( collision.GameObject.Tags.Has( "player" ) )
{
chicken.StartDeathSequence();
}
}
void ITriggerListener.OnTriggerExit( Collider other )
{
}
}