Pages

07 November, 2023

OnCollisionEnter does not work correctly at high speeds?

public class BulletController : MonoBehaviour
{
public float speed;
[SerializeField] Rigidbody rb;
[SerializeField] GameObject impactEffect;

void Start()
{
rb = GetComponent();
Destroy(gameObject, 4f);
}

void Update()
{
rb.velocity = transform.forward * speed;
}

private void OnCollisionEnter(Collision collision)
{

ContactPoint contactPoint = collision.contacts[0];
Quaternion rotation = Quaternion.FromToRotation(Vector3.forward, contactPoint.normal);
Instantiate(impactEffect, transform.position, rotation);
Destroy(this.gameObject);

}

}



Youtube Link - Listen without sound. There is a crazy fan sound :)


I am trying to make a when bullet collides with something to be destroyed and instantiate a hitteffect but OnCollisionEnter or OnTriggerEnter does not work as intended at high speed objects I guess. Sometimes impactEffect instantiates inside colision object and even sometimes on the other side of object. (See Video). I have tried to write contactPoint[0].transform and it is also same. Does anybody have a solution ?

No comments:

Post a Comment

Thanks