Raycast Problem With enemy and objects
So, I have my enemy, and if he sees you he chases you, if he doesn't then he wanders around. this is done by raycast.
I have objects around the place that you need to click on. I am using OnMouseDown. I have a trigger, so that you can only click when you are inside that trigger. Therefore you cannot click from far away. This is a problem however, since when you are inside the trigger, the enemy can no longer see you. I have tried changing the layer to "Ignore raycast" but then OnMouseDown no longer works. Here is the kind of code that i have if the enemy can see the player or not -
var player: Transform var hit : RaycastHit; var rayDirection = player.position - transform.position; if (Physics.Raycast (transform.position, rayDirection, hit)) { if (hit.transform == player) { // enemy can see the player! } else { // there is something obstructing the view
So, Yeh. Thanks! If anyone could help that would be great. :))
(I'm 13 btw)
If it works for your needs, you could skip using triggers entirely, and give your raycast a maximum distance. This simulates your characters reach distance. You could potentially check for being "hidden" based on distance from clickable object (depending on the layout of your models, this might not be accurate enough, though) if (Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out mHit, 50)) //checks a distance of 50 in front of camera
Answer by Anton-Korhonen · Nov 01, 2016 at 02:48 PM
There are a variety of methods:
First: Go to Edit->Project Settings->Physics and from the top untick "Queries Hit Triggers"
Second: You could call Physics.Raycast with the QueryTriggerInteraction.Ignore parameter. Check the docs for adding the additional parameters to your Physics.Raycast.