Sign in to follow this  
VisualChaser

Line of sight

Recommended Posts

VisualChaser    400

I am currently working on a game in flash (with AS3), and I ran into a weird issue with the line of sight of the enemies. It's easier to explain with a picture. Blue = walls. Green = enemy. Red = area the enemy can't see the player.

 

AzO9XMt.png

 

This is the codes:

var playerVisible:Boolean = true;
var angleRadian = Math.atan2(_player.y - _enemy[i].y, _player.x - _enemy[i].x);
var angleDegree = angleRadian * 180 / Math.PI;

var enemyDistancex:Number = _player.x - _enemy[i].x;
var enemyDistancey:Number = _player.y - _enemy[i].y;
if(enemyDistancex < 0)
	enemyDistancex *= -1;
if(enemyDistancey < 0)
	enemyDistancey *= -1;
var enemyDistance:Number = Math.sqrt((enemyDistancex * enemyDistancex) + (enemyDistancey * enemyDistancey));

while(enemyDistance > 0 && playerVisible)
{
	if(_walls.hitTestPoint(_enemy[i].x - (Math.sin(angleDegree * (Math.PI / 180)) * enemyDistance), _enemy[i].y - (Math.cos(angleDegree * (Math.PI / 180) * -1) * enemyDistance), true))
	{
		playerVisible = false;
	}
	
	enemyDistance--;
}

I tried a lot, but I can't seem to figure it out. Could someone help me out?

Share this post


Link to post
Share on other sites
VisualChaser    400

That's the current behavior the code below the picture creates.

 

By the way, I use the same codes to calculate the enemy rotation for targeting the player and it works fine, but somehow it is buggy when I use it for the line of sight.

Share this post


Link to post
Share on other sites

Why aren't you using vectors? Calling atan2 and then calling sin, cos with the result is usually a sure sign you should be using 2d vectors instead of trigonometry for the problem.

Edited by Paradigm Shifter

Share this post


Link to post
Share on other sites

Well you calculate the vector

 

player - enemy[i]

 

and do a load of unnecessary trig stuff with it when that gives you the 2d direction vector from the enemy to the player directly...

 

I'd definitely recommend reading up on vectors, you rarely need to use trig and the stuff you do need/are using involving vectors is just the very basic stuff.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this