- Home /
Raycast is returnig hits only once per object?
So here is my problem... my raycast returns hits only once per rigidboy or collider, i want it to return hits everytime... here is my code
function FixedUpdate () {
var hit : RaycastHit;
Debug.DrawRay(BarrelEnd.position,BarrelEnd.forward *10, Color.green);
if (Physics.Raycast (BarrelEnd.position, BarrelEnd.forward, hit, 100.0))
{
if(hit.rigidbody.tag == "Friendly")
{
print("Friendly");
}
}
else
{
print("Nothing");
}
}
I am trying to get the raycast to return a value only when its hitting the ship where the turret attached(so it doesnt shoot when aiming at itself or at a friendly).
When it starts its fine (prints Nothing), it hits me its fine(prints Nothing), it hits the ship it prints friendly, but when it moves away from the ship it still prints friendly...
Been looking on the forums for days didnt find an answer.
Answer by privateknez · Oct 18, 2010 at 09:20 AM
This code seems to work for me...
private var raytest : int = 0;
function FixedUpdate () {
var hit : RaycastHit; Debug.DrawRay(BarrelEnd.position,BarrelEnd.forward *100, Color.green); if (Physics.Raycast (BarrelEnd.position, BarrelEnd.forward, hit, 100.0)) { if(hit.rigidbody.tag != "Friendly") { raytest = 0; } if (hit.rigidbody.tag == "Friendly") { raytest = 1; } } else { raytest = 0; } print(raytest); }
It returns 1 when hitting a friendly and 0 when hitting anything else or nothing, and thnx for the collapse thingy
This helped me with a few pointers, just been having a similar problem. I realised that just changing a variable based on the cast and then debugging out that variable was a much better way of doing what I wanted. Cheers!
Answer by cupsster · Dec 24, 2010 at 02:35 AM
keep in mind that you have set raycast lenght to 100.0 units... if your scene is out of scale this can cause problems.. try to visualy check for raycast... insert this code to true section of raycast
Debug.DrawRay (BarrelEnd.position, BarrelEnd.forward * hit.distance, Color.red);