XNA Ghost Attack Behaviour

Started by
2 comments, last by Dave Hunt 9 years ago

Hi all,

I am trying to create a game where the player is attacked by various types of ghosts. I am having trouble making the ghosts wait for a set amount of time after colliding with the player. I am attaching a file that contains the code where interactions are checked, and the Attack() method.

Any help would be great as I have very little XNA experience.

Advertisement

Most likely, your BoundBox.Intersects() function never returns TRUE. Probably because your collision response has already been applied somewhere in another part of your code, which pushes the bounding boxes away from each other? Then you need to figure out another way to detect collisions.

And if that's not it, then it's most definitely because your "float time" variable is not static or global, so it gets set to 0 every frame (or every time you call the Attack() function), and then to the elapsed frame time, instead of accumulating the time since the collision was detected.

Also, you shouldn't use floating point variables for storing time values, since most of the system functions return time values as an unsigned integer. If you convert the system's time values to float, aside from that extra conversion, you're also just throwing away bits of precision, and forcing floating point operations where integer operations would be sufficient (and faster).

Not sure if your goal matches mine, but you benefit from this:
http://www.gamedev.net/topic/665434-pacman-ghost-ai/

Crealysm game & engine development: http://www.crealysm.com

Looking for a passionate, disciplined and structured producer? PM me


Also, you shouldn't use floating point variables for storing time values, since most of the system functions return time values as an unsigned integer. If you convert the system's time values to float, aside from that extra conversion, you're also just throwing away bits of precision, and forcing floating point operations where integer operations would be sufficient (and faster).

XNA's GameTime class uses TimeSpan structures, which return seconds as doubles.


And if that's not it, then it's most definitely because your "float time" variable is not static or global, so it gets set to 0 every frame (or every time you call the Attack() function), and then to the elapsed frame time, instead of accumulating the time since the collision was detected.

This.

This topic is closed to new replies.

Advertisement