I have recently started a top down shooter project and i am able to make the player face the mouse position and move around the screen. I don't know how to make the shooting projectiles towards the mouse possible. I also have a hard time understanding types used with arrays. any suggestions would be helpfull.
// Project: EpicTopDownShooter
// Created: 21-11-25
// show all errors
#include "MyGame.scene"
#include "Playermovement.agc"
SetErrorMode(2)
// set window properties
SetWindowTitle( "EpicTopDownShooter" )
SetWindowSize( 1024, 768, 0 )
SetWindowAllowResize( 1 ) // allow the user to resize the window
// set display properties
SetVirtualResolution( 1024, 768 ) // doesn't have to match the window
SetOrientationAllowed( 1, 1, 1, 1 ) // allow both portrait and landscape on mobile devices
SetSyncRate( 60, 0 ) // 30fps instead of 60 to save battery
SetScissor( 0,0,0,0 ) // use the maximum available screen space, no black borders
UseNewDefaultFonts( 1 )
MyGame_setup()
LoadImage(1, "PrototypeShooter/Handgun1.png")
LoadImage(2, "PrototypeShooter/Handgun2.png")
Loadimage(3, "PrototypeShooter/Tile4.png")
for i = 0 to 2000
i = i + 10
CreateSprite(i, 3)
SetSpritePosition(i, i, 5)
next i
CreateSprite(2, 0)
LoadImage(4, "PrototypeShooter/BulletProjectile.png" )
CreateSprite(10000, 4)
SetSpritePosition(2, 100, 100)
AddSpriteAnimationFrame(2, 1)
AddSpriteAnimationFrame(2, 2)
SetSpritePhysicsOn(2, 1)
function dontLeaveScreen()
if (GetSpriteX(2) < GetScreenBoundsLeft())
SetSpritePosition(2, 0.0, GetSpriteY(2))
endif
if (GetSpriteX(2) > 950.00)
SetSpritePosition(2, 950.00, GetSpriteY(2))
endif
if (GetSpriteY(2) < GetScreenBoundsTop())
SetSpritePosition(2, GetSpriteX(2), 0.0)
endif
if (GetSpriteY(2) > 690.00)
SetSpritePosition(2, GetSpriteX(2), 690.00)
endif
endfunction
flag as integer = 0
CreateSprite(5000, 4)
SetSpritePosition(5000, GetSpriteX(2) + 10, GetSpriteY(2))
SetSpriteVisible(5000, 0)
do
mouseX = GetRawMouseX()
mouseY = GetRawMouseY()
playerX = GetSpriteX(2)
playerY = GetSpriteY(2)
// Player Rotation - Face Mouse Pointer
rotationAngle = ATan2(playerY - mouseY, playerX - mouseX)
rotationAngle = rotationAngle - 180
SetSpriteAngle(2, rotationAngle)
if GetPointerPressed()
SetSpriteVisible(5000, 1)
PlaySprite(2, 10, 0, 2, 1)
/*pointer_x = GetPointerX()
pointer_y = GetPointerY()
dx = GetSpriteX(5000) - pointer_x
dy = GetSpriteY(5000) - pointer_y
spriteAngle = ATanFull(dy, dx)
spriteAngle = SpriteAngle - 180
vx=sin(spriteAngle)*2
vy=cos(spriteAngle)*2
SetSpriteX(5000, GetSpriteX(5000) + vx)
SetSpriteY(5000, GetSpriteY(5000) + vy)
*/
endif
gosub PlayerMovement
dontLeaveScreen()
MyGame_sync()
Print( ScreenFPS() )
Sync()
loop