Top Down ShooterLink to GM TAW Program:
http://www.rpgrevolution.com/forums/index....showtopic=31232http://www.mediafire.com/download.php?zmymm3rd2fmThis is a demo of a possible way to make a top-down shooter game. It's probably not the most efficient way to do it (especially from an ease-of-customization) standpoint, but it's a start!

Enemy sprite by Darkblade.
EDIT:
Talking with Darkblade, seems like some people have problems with firing while moving diagonally up-left and down-right. I think it might be a limit on how many keys can be pressed. However, certain keys seem to be better with each other than others. If you can't get it to work right, try using WASD instead of arrow keys.
To do so, replace scrHandleFacing with this:
CODE
{
//Facing is handled separately from movement direction, because otherwise it would be impossible to face a wall you were standing next to!
//This script checks for basically every possible button combination for the arrow keys
charDirect = charDirect;
if (keyboard_check(ord('S')) && !keyboard_check(ord('W')))
{
charDirect = 270;
}
if (keyboard_check(ord('W')) && !keyboard_check(ord('S')))
{
charDirect = 90
}
if (keyboard_check(ord('D')) && !keyboard_check(ord('A')))
{
charDirect = 0;
if (keyboard_check(ord('S')) && !keyboard_check(ord('W')))
{
charDirect = 315;
}
if (keyboard_check(ord('W')) && !keyboard_check(ord('S')))
{
charDirect = 45
}
}
if (keyboard_check(ord('A')) && !keyboard_check(ord('D')))
{
charDirect = 180;
if (keyboard_check(ord('S')) && !keyboard_check(ord('W')))
{
charDirect = 225;
}
if (keyboard_check(ord('W')) && !keyboard_check(ord('S')))
{
charDirect = 135
}
}
image_index = charDirect/45;
}
and replace scrMovement with this:
CODE
{
//because the origin point of the sprite is based on a pixel and not an intersection, x-13 is one pixel to the left of the image, and x+12 is one to the right.
//if it were an intersection, you'd use 13 for both
if (keyboard_check(ord('W')))
{
if (!collision_rectangle(x-12,y-13,x+11,y-13,objBlock,0,1))
{
y -= 4;
}
}
if (keyboard_check(ord('S')))
{
if (!collision_rectangle(x-12,y+12,x+11,y+12,objBlock,0,1))
{
y += 4;
}
}
if (keyboard_check(ord('A')))
{
if (!collision_rectangle(x-13,y-12,x-13,y+11,objBlock,0,1))
{
x -= 4;
}
}
if (keyboard_check(ord('D')))
{
if (!collision_rectangle(x+12,y-12,x+12,y+11,objBlock,0,1))
{
x += 4;
}
}
}