Optimize script

This commit is contained in:
sam-astro 2022-05-25 07:46:22 -04:00 committed by GitHub
parent 3d8fca05ba
commit 86af2af61a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -8,6 +8,7 @@ float g_jumpHeight = 20
float g_currPlayerSpeed = 400 float g_currPlayerSpeed = 400
bool g_running = false bool g_running = false
bool g_colliding = false
float g_gravitySpeed = -86 float g_gravitySpeed = -86
@ -17,7 +18,7 @@ func Main()
{ {
//SplitThread(ThreadedFunction()) //SplitThread(ThreadedFunction())
// Immediately creates the window, then Start(), then the game loop. The game loop calls Update() every frame // Immediately creates the window, then runs Start(), then the game loop. The game loop calls Update() every frame
ZS.Graphics.Init("Platformer game", g_screenw, g_screenh, g_resolutionScale) ZS.Graphics.Init("Platformer game", g_screenw, g_screenh, g_resolutionScale)
} }
@ -28,33 +29,20 @@ func ThreadedFunction()
func Start() func Start()
{ {
float centerX = g_screenw / 2 global Vec2 g_screencenter = NVec2(g_screenw / 2, g_screenh / 2)
float centerY = g_screenh / 2
global Vec2 g_screencenter = NVec2(centerX, centerY)
Vec2 playerPos = g_screencenter global Sprite g_playerSprite = ZS.Graphics.Sprite("./mariostill.png", g_screencenter, NVec2(16, 16), 0)
Vec2 playerScale = NVec2(16, 16)
global Sprite g_playerSprite = ZS.Graphics.Sprite("./mariostill.png", playerPos, playerScale, 0)
Vec2 groundPos = NVec2(g_screencenter.x, 192) global Sprite g_groundSprite = ZS.Graphics.Sprite("./square.png", NVec2(g_screencenter.x, 192), NVec2(256, 16), 0)
Vec2 groundScale = NVec2(256, 16)
global Sprite g_groundSprite = ZS.Graphics.Sprite("./square.png", groundPos, groundScale, 0)
Vec2 instructionsPos = NVec2(centerOfScreen.x, centerOfScreen.y) global Text g_instructionsText = ZS.Graphics.Text("Use Arrow Keys or WASD to Move and Spacebar to Jump", "./arial.ttf", NVec2(centerOfScreen.x, centerOfScreen.y), 11, 0, 255, 255, 255)
global Text g_instructionsText = ZS.Graphics.Text("Use Arrow Keys or WASD to Move and Spacebar to Jump", "./arial.ttf", instructionsPos, 20, 0, 255, 255, 255)
global Vec2 g_playerTargetPosition = playerPos global Vec2 g_playerTargetPosition = playerPos
int i = 0
while i < 10 {
i += 1
print "while iter : " + i
}
} }
func Update(deltaTime) { func Update(deltaTime) {
float fps = 1 / deltaTime float fps = 1 / deltaTime
print "FPS: " + fps print "FPS: " + fps + "\r"
//TestInclude() //TestInclude()
//// Test automatic conversion from bool to int //// Test automatic conversion from bool to int
@ -67,38 +55,38 @@ func Update(deltaTime) {
if g_running == true { if g_running == true {
g_currPlayerSpeed = g_playerRunSpeed g_currPlayerSpeed = g_playerRunSpeed
} }
if g_running == false if g_running == false {
{
g_currPlayerSpeed = g_playerWalkSpeed g_currPlayerSpeed = g_playerWalkSpeed
} }
// Move Left And Right // Move Left And Right
if GetKey("A") == true if GetKey("A") == true
{ {
float newY = g_playerSprite.position.y
float newX = g_playerTargetPosition.x - g_currPlayerSpeed * deltaTime float newX = g_playerTargetPosition.x - g_currPlayerSpeed * deltaTime
g_playerTargetPosition = NVec2(newX, newY) g_playerTargetPosition = NVec2(newX, g_playerSprite.position.y)
} }
if GetKey("D") == true if GetKey("D") == true
{ {
float newY = g_playerSprite.position.y
float newX = g_playerTargetPosition.x + g_currPlayerSpeed * deltaTime float newX = g_playerTargetPosition.x + g_currPlayerSpeed * deltaTime
g_playerTargetPosition = NVec2(newX, newY) g_playerTargetPosition = NVec2(newX, g_playerSprite.position.y)
} }
// Lerps from old position to destination smoothly
float oldX = g_playerSprite.position.x
float newX = g_playerTargetPosition.x
float stopSpeed = deltaTime * 7
float lerpedX = Lerp(oldX, newX, stopSpeed)
g_playerSprite.position = NVec2(lerpedX, g_playerTargetPosition.y)
// Apply gravity
g_colliding = Colliding(g_playerSprite, g_groundSprite)
if g_colliding == false {
g_playerTargetPosition.y -= deltaTime * g_gravitySpeed
}
// Lerps from old position to destination smoothly
float stopSpeed = deltaTime * 7
float lerpedX = Lerp(g_playerSprite.position.x, g_playerTargetPosition.x, stopSpeed)
g_playerSprite.position = NVec2(lerpedX, g_playerTargetPosition.y)
// Finally draws all of the sprites // Finally draws all of the sprites
ZS.Graphics.Draw(g_playerSprite) ZS.Graphics.Draw(g_playerSprite)
ZS.Graphics.Draw(g_groundSprite) ZS.Graphics.Draw(g_groundSprite)
// Draw the text
ZS.Graphics.DrawText(g_instructionsText) ZS.Graphics.DrawText(g_instructionsText)
} }