- Home /
raycast2d doesnt aim towards correct target
So the object trying to follow the target, re-casts a raycast towards the targets position repeatedly- it follows it correct when i remove checking that it still hit the player (i'd want it to basically stop following once the line was intersected - also that even then only works when i remove the layermask (as in the tilemap world, with colliders) in fact when i enable the layermask, even though the player object is NOT in the world layer, is in its own, IT TOO gets ignored ??
Can anyone see the issue? I cant -also it shouldnt be able to not hit anything, when the layermask is off, because itll intersect with any of the colliders that encompasses the areas - when i move around the follower, it only detects (can see in debug log) at certain angles, i presume it doesnt change where i was to where i am? Or something?
Basically it doesnt seem to cast the ray directly unto the object its currently following, directly. Which it obviously should
Here's the code
public IEnumerator followTarget(GameObject tempTarget)
{
Debug.Log(this.name + " is chasing " + tempTarget.name);
isFollowing = true;
int followedForTimeCounter = 0;
while (isFollowing)
{
followedForTimeCounter++;
//Debug.Log("Followed for: "+followedForTimeCounter);
RaycastHit2D rayHit = Physics2D.Raycast(
this.transform.position,
tempTarget.transform.position,
npcLookRange/*currently 1000f*/ /*, LayerMask.NameToLayer("World")*/);
//Debug.Log("Following " + rayHit.collider.gameObject.name);
if (rayHit)
{
Debug.Log("rayHit on: "+rayHit.collider.gameObject.name);
if (true /*rayHit.collider.gameObject.name.Equals(tempTarget.name)*/)
{
float tempDistance = Vector2.Distance(
this.transform.position,
tempTarget.transform.position
);
Debug.Log("Distance to object: "+tempDistance);
if (tempDistance > minFollowingDistance)
{
this.transform.position = Vector2.MoveTowards(
this.transform.position,
tempTarget.transform.position,
followSpeed * Time.deltaTime
);
//start battle if battle-able.
}
if (tempDistance > maxFollowingDistance)
{
Debug.Log("Object outran them!");
isFollowing = false;
}
}
else
{
Debug.Log("Couldnt see Object!");
isFollowing = false;
}
}
else
{
Debug.Log("Ray hit nothing?? How?!");
//If this happens, that should be impossible, bug?
//isFollowing = false; //why, hm.
}
yield return null;
}
Debug.Log(this.name + " is no longer chasing " + tempTarget.name);
yield return null;
}
Your answer