How can i avoid for example 3 Raycast hitting the same object multiple times? These 3 Raycast are all casted at the same time and i’d like the other 2 Raycast avoid the already hit Collider.
Create a bool like HasHit, you can set it to true during the collision event, and ten declare a “cooldown” by adding a deltaTime counter, or make a Coroutine but I don’t think its necessary here.
Usually what I’d do is create references to the colliders, maybe even do a LastHitColllider variable.
Post your code, and maybe we can help alter it with you.
I dont know if there is a way to do that, but what you can do is ignore all colliders exept one. I’m not sure but maybe there is a way to do what you want.
Anyway here’s the example that i found on the docs some time ago.
function OnTriggerEnter (other : Collider) {
//print("something enter the trigger");
var ray : Ray;
var hit : RaycastHit;
var relativePos : Vector3 = (transform.position - StartingPos);
var rotation : Quaternion = Quaternion.LookRotation(relativePos);
ray.direction = relativePos;
ray.origin = StartingPos;
if (other.Raycast(ray, hit, 1000.0)) {
//print("Something was hit");
}
}
the variable “StartingPos” is a vector3 that i store at the start of the behaviour for get the direction of the ray. This is actually a bullet script that rather than shoot a raycast i instantiate a gameobject with rigidbody and trigger collider. I end using this instead of let the physic engine process the collisions. And i was checking the hit position with this weird raycast function, becouse “OnTrigger” stuff dont give you any contact point like “OnCollision” calls.