From 748f605bffed1309e8dfaf95110c5883ac23dca7 Mon Sep 17 00:00:00 2001 From: Jalen Winslow Date: Tue, 23 Jan 2018 06:06:35 -0700 Subject: [PATCH 1/7] animated sprite --- main.go | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/main.go b/main.go index 1529f3b..7e90272 100644 --- a/main.go +++ b/main.go @@ -96,6 +96,8 @@ func run() { var now int64 var dt int64 + frameCounter := 0 + // Game Loop for !win.Closed() { now = time.Now().UnixNano() @@ -126,23 +128,33 @@ func run() { //mouse := cam.Unproject(win.MousePosition()) + frameCounter += 1 + if frameCounter >= 3 { + frameCounter = 0 + } speed := 10.0 + sprFrame := 0 if win.Pressed(pixelgl.KeyA) { //left + sprFrame = 6 playerX -= speed - Sprite.Set(spritesheet, spritesFrames[6]) + //Sprite.Set(spritesheet, spritesFrames[sprFrame+frameCounter]) } if win.Pressed(pixelgl.KeyD) { //Right + sprFrame = 3 playerX += speed - Sprite.Set(spritesheet, spritesFrames[3]) + //Sprite.Set(spritesheet, spritesFrames[3]) } if win.Pressed(pixelgl.KeyS) { //Down + sprFrame = 9 playerY -= speed - Sprite.Set(spritesheet, spritesFrames[9]) + //Sprite.Set(spritesheet, spritesFrames[9]) } if win.Pressed(pixelgl.KeyW) { //up + sprFrame = 0 playerY += speed - Sprite.Set(spritesheet, spritesFrames[0]) + //Sprite.Set(spritesheet, spritesFrames[0]) } + Sprite.Set(spritesheet, spritesFrames[sprFrame+frameCounter]) camPos.X = playerX camPos.Y = playerY camZoom *= math.Pow(camZoomSpeed, win.MouseScroll().Y) From f35e40470331c480b7f882a6544d34db827f3434 Mon Sep 17 00:00:00 2001 From: Jalen Winslow Date: Tue, 23 Jan 2018 06:12:38 -0700 Subject: [PATCH 2/7] slowed down the sprite --- main.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index 7e90272..5878e30 100644 --- a/main.go +++ b/main.go @@ -127,8 +127,9 @@ func run() { */ //mouse := cam.Unproject(win.MousePosition()) - - frameCounter += 1 + if frames%10==0 { + frameCounter += 1 + } if frameCounter >= 3 { frameCounter = 0 } From 423243302c9e55ba8d40d162ded9f67cee6b0ee6 Mon Sep 17 00:00:00 2001 From: Jalen Winslow Date: Tue, 23 Jan 2018 11:58:35 -0700 Subject: [PATCH 3/7] added non-working playerObject --- gameobjects/player.go | 83 +++++++++++++++++++++++++++++++++++++++++++ main.go | 35 +++++++++++------- 2 files changed, 105 insertions(+), 13 deletions(-) create mode 100644 gameobjects/player.go diff --git a/gameobjects/player.go b/gameobjects/player.go new file mode 100644 index 0000000..16b3733 --- /dev/null +++ b/gameobjects/player.go @@ -0,0 +1,83 @@ +package gameobjects + +import ( + "github.com/faiface/pixel" + "github.com/faiface/pixel/pixelgl" + //"fmt" +) + +type Player struct { + X, Y float64 + PlayerVec pixel.Vec + sprFrame int + spriteSheet pixel.Picture + sprFrames []pixel.Rect + sprite *pixel.Sprite + speed float64 +} + +func NewPlayer(win *pixelgl.Window, spriteSheet pixel.Picture) (*Player){ + var p *Player + p.X = win.Bounds().Max.X/2 + p.Y = win.Bounds().Max.Y/2 + p.PlayerVec = pixel.Vec{ + X:win.Bounds().Max.X/2, + Y:win.Bounds().Max.Y/2, + } + p.sprFrame = 9 + p.spriteSheet = spriteSheet + p.sprFrames = createSpriteFrames(spriteSheet) + p.sprite = pixel.NewSprite(spriteSheet, p.sprFrames[p.sprFrame]) + p.speed = 10.0 + return p +} + +func (p *Player) Update(win *pixelgl.Window, dt int64) { + + speed := p.speed + + + + if win.Pressed(pixelgl.KeyA) { //left + p.sprFrame = 6 + p.X -= speed + } + if win.Pressed(pixelgl.KeyD) { //Right + p.sprFrame = 3 + p.X += speed + } + if win.Pressed(pixelgl.KeyS) { //Down + p.sprFrame = 9 + p.Y -= speed + } + if win.Pressed(pixelgl.KeyW) { //up + p.sprFrame = 0 + p.Y += speed + } + p.sprite.Set(p.spriteSheet, p.sprFrames[p.sprFrame]) + + //p.PlayerVec.X += vecX + //p.PlayerVec.Y += vecY + + p.PlayerVec = pixel.Vec { + X: p.X, + Y: p.Y, + } + //fmt.Println(p.PlayerVec.X,p.PlayerVec.Y) +} + +func (p *Player) Render(win *pixelgl.Window) { //include batch later + + p.sprite.Draw(win, pixel.IM.Scaled(pixel.ZV, 4).Moved(p.PlayerVec)) +} + +func createSpriteFrames(spriteSheet pixel.Picture) ([]pixel.Rect) { + var sprFrames []pixel.Rect + var frameHeight, frameWidth float64 = 96, 96 + for y := spriteSheet.Bounds().Min.Y; y < frameHeight*4; y += 96 { + for x := spriteSheet.Bounds().Min.X; x < frameWidth*3; x += 96 { + sprFrames = append(sprFrames, pixel.R(x, y, x+96, y+96)) // (x, y, width, height) of frame + } + } + return sprFrames +} \ No newline at end of file diff --git a/main.go b/main.go index 5878e30..cc07f16 100644 --- a/main.go +++ b/main.go @@ -12,6 +12,7 @@ import ( "github.com/faiface/pixel" "github.com/faiface/pixel/pixelgl" "golang.org/x/image/colornames" + "gitbutter.pw/zolfite/project-rpg/gameobjects" ) func loadPicture(path string) (pixel.Picture, error) { @@ -67,11 +68,10 @@ func run() { spritesFrames = append(spritesFrames, pixel.R(x, y, x+96, y+96)) // (x, y, width, height) of frame } } - Sprite := pixel.NewSprite(spritesheet, spritesFrames[9]) - + //Sprite := pixel.NewSprite(spritesheet, spritesFrames[9]) + var ( camPos = pixel.ZV - //camSpeed = 500.0 camZoom = 0.3 camZoomSpeed = 1.2 ) @@ -80,15 +80,17 @@ func run() { frames = 0 second = time.Tick(time.Second) ) - playerX := win.Bounds().Max.X / 2 - playerY := win.Bounds().Max.Y / 2 - + //playerX := win.Bounds().Max.X / 2 + //playerY := win.Bounds().Max.Y / 2 + /* var ( playerXY = pixel.Vec{ playerX, playerY, } - ) + )*/ + + player := gameobjects.NewPlayer(win, spritesheet) var fps int64 = 60 timePerFrame := 1000000000 / fps @@ -96,7 +98,8 @@ func run() { var now int64 var dt int64 - frameCounter := 0 + //frameCounter := 0 + //sprFrame := 0 // Game Loop for !win.Closed() { @@ -109,10 +112,11 @@ func run() { // *** Update begins *** // + /* playerXY = pixel.Vec{ playerX, playerY, - } + }*/ cam := pixel.IM.Scaled(camPos, camZoom).Moved(win.Bounds().Center().Sub(camPos)) win.SetMatrix(cam) @@ -127,6 +131,7 @@ func run() { */ //mouse := cam.Unproject(win.MousePosition()) + /* if frames%10==0 { frameCounter += 1 } @@ -134,7 +139,7 @@ func run() { frameCounter = 0 } speed := 10.0 - sprFrame := 0 + if win.Pressed(pixelgl.KeyA) { //left sprFrame = 6 playerX -= speed @@ -156,8 +161,11 @@ func run() { //Sprite.Set(spritesheet, spritesFrames[0]) } Sprite.Set(spritesheet, spritesFrames[sprFrame+frameCounter]) - camPos.X = playerX - camPos.Y = playerY + */ + player.Update(win, dt) + + camPos.X = player.PlayerVec.X + camPos.Y = player.PlayerVec.Y camZoom *= math.Pow(camZoomSpeed, win.MouseScroll().Y) // *** Update Ends *** // @@ -165,7 +173,8 @@ func run() { // *** Render begin *** // win.Clear(colornames.Forestgreen) bg.Draw(win, pixel.IM.Moved(win.Bounds().Center())) - Sprite.Draw(win, pixel.IM.Scaled(pixel.ZV, 4).Moved(playerXY)) + //Sprite.Draw(win, pixel.IM.Scaled(pixel.ZV, 4).Moved(playerXY)) + player.Render(win) //batch.Draw(win) win.Update() From 93fd0c714d9d4e9dd8899b542831616ef423fa72 Mon Sep 17 00:00:00 2001 From: Jalen Winslow Date: Tue, 23 Jan 2018 12:08:30 -0700 Subject: [PATCH 4/7] fixed non-working player --- gameobjects/player.go | 25 +++++--------- main.go | 77 ------------------------------------------- 2 files changed, 9 insertions(+), 93 deletions(-) diff --git a/gameobjects/player.go b/gameobjects/player.go index 16b3733..c906b7d 100644 --- a/gameobjects/player.go +++ b/gameobjects/player.go @@ -17,7 +17,7 @@ type Player struct { } func NewPlayer(win *pixelgl.Window, spriteSheet pixel.Picture) (*Player){ - var p *Player + var p Player p.X = win.Bounds().Max.X/2 p.Y = win.Bounds().Max.Y/2 p.PlayerVec = pixel.Vec{ @@ -29,45 +29,38 @@ func NewPlayer(win *pixelgl.Window, spriteSheet pixel.Picture) (*Player){ p.sprFrames = createSpriteFrames(spriteSheet) p.sprite = pixel.NewSprite(spriteSheet, p.sprFrames[p.sprFrame]) p.speed = 10.0 - return p + return &p } func (p *Player) Update(win *pixelgl.Window, dt int64) { - + var vecX, vecY float64 = 0, 0 speed := p.speed if win.Pressed(pixelgl.KeyA) { //left p.sprFrame = 6 - p.X -= speed + vecX -= speed } if win.Pressed(pixelgl.KeyD) { //Right p.sprFrame = 3 - p.X += speed + vecX += speed } if win.Pressed(pixelgl.KeyS) { //Down p.sprFrame = 9 - p.Y -= speed + vecY -= speed } if win.Pressed(pixelgl.KeyW) { //up p.sprFrame = 0 - p.Y += speed + vecY += speed } p.sprite.Set(p.spriteSheet, p.sprFrames[p.sprFrame]) - //p.PlayerVec.X += vecX - //p.PlayerVec.Y += vecY - - p.PlayerVec = pixel.Vec { - X: p.X, - Y: p.Y, - } - //fmt.Println(p.PlayerVec.X,p.PlayerVec.Y) + p.PlayerVec.X += vecX + p.PlayerVec.Y += vecY } func (p *Player) Render(win *pixelgl.Window) { //include batch later - p.sprite.Draw(win, pixel.IM.Scaled(pixel.ZV, 4).Moved(p.PlayerVec)) } diff --git a/main.go b/main.go index cc07f16..6714652 100644 --- a/main.go +++ b/main.go @@ -53,23 +53,6 @@ func run() { bg := pixel.NewSprite(background, background.Bounds()) //batch := pixel.NewBatch(&pixel.TrianglesData{}, spritesheet) - - /* setting-character-sprite - - basically changed it around so the 12 frames of the character with yellow hair - are added to spritesFrames. - - */ - - var spritesFrames []pixel.Rect - var frameWidth, frameHeight float64 = 96, 96 - for y := spritesheet.Bounds().Min.Y; y < frameHeight*4; y += 96 { - for x := spritesheet.Bounds().Min.X; x < frameWidth*3; x += 96 { - spritesFrames = append(spritesFrames, pixel.R(x, y, x+96, y+96)) // (x, y, width, height) of frame - } - } - //Sprite := pixel.NewSprite(spritesheet, spritesFrames[9]) - var ( camPos = pixel.ZV camZoom = 0.3 @@ -80,16 +63,6 @@ func run() { frames = 0 second = time.Tick(time.Second) ) - //playerX := win.Bounds().Max.X / 2 - //playerY := win.Bounds().Max.Y / 2 - /* - var ( - playerXY = pixel.Vec{ - playerX, - playerY, - } - )*/ - player := gameobjects.NewPlayer(win, spritesheet) var fps int64 = 60 @@ -98,9 +71,6 @@ func run() { var now int64 var dt int64 - //frameCounter := 0 - //sprFrame := 0 - // Game Loop for !win.Closed() { now = time.Now().UnixNano() @@ -112,56 +82,10 @@ func run() { // *** Update begins *** // - /* - playerXY = pixel.Vec{ - playerX, - playerY, - }*/ cam := pixel.IM.Scaled(camPos, camZoom).Moved(win.Bounds().Center().Sub(camPos)) win.SetMatrix(cam) - /* - This is where Sprite and bg was originally. Creating them over and over inside - the main loop is not very good resource management. When i added my own dt, the game was - only going about 22 fps, when it should've been going 60. I moved them - out of the loop and created them up top. It fixed it and now runs faster. - - the tutorial only has it in the loop with the exception that it creates it only - if you click the button to make a tree. It only created it once and added it. - */ - - //mouse := cam.Unproject(win.MousePosition()) - /* - if frames%10==0 { - frameCounter += 1 - } - if frameCounter >= 3 { - frameCounter = 0 - } - speed := 10.0 - if win.Pressed(pixelgl.KeyA) { //left - sprFrame = 6 - playerX -= speed - //Sprite.Set(spritesheet, spritesFrames[sprFrame+frameCounter]) - } - if win.Pressed(pixelgl.KeyD) { //Right - sprFrame = 3 - playerX += speed - //Sprite.Set(spritesheet, spritesFrames[3]) - } - if win.Pressed(pixelgl.KeyS) { //Down - sprFrame = 9 - playerY -= speed - //Sprite.Set(spritesheet, spritesFrames[9]) - } - if win.Pressed(pixelgl.KeyW) { //up - sprFrame = 0 - playerY += speed - //Sprite.Set(spritesheet, spritesFrames[0]) - } - Sprite.Set(spritesheet, spritesFrames[sprFrame+frameCounter]) - */ player.Update(win, dt) camPos.X = player.PlayerVec.X @@ -173,7 +97,6 @@ func run() { // *** Render begin *** // win.Clear(colornames.Forestgreen) bg.Draw(win, pixel.IM.Moved(win.Bounds().Center())) - //Sprite.Draw(win, pixel.IM.Scaled(pixel.ZV, 4).Moved(playerXY)) player.Render(win) //batch.Draw(win) From 7d9f54c0133536ca808d9a104c5fbdd5c59f298f Mon Sep 17 00:00:00 2001 From: mollusk Date: Wed, 24 Jan 2018 02:14:19 -0700 Subject: [PATCH 5/7] format and remove unused pointer --- gameobjects/player.go | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/gameobjects/player.go b/gameobjects/player.go index c906b7d..bf6d40b 100644 --- a/gameobjects/player.go +++ b/gameobjects/player.go @@ -7,37 +7,35 @@ import ( ) type Player struct { - X, Y float64 - PlayerVec pixel.Vec - sprFrame int + X, Y float64 + PlayerVec pixel.Vec + sprFrame int spriteSheet pixel.Picture - sprFrames []pixel.Rect - sprite *pixel.Sprite - speed float64 + sprFrames []pixel.Rect + sprite *pixel.Sprite + speed float64 } -func NewPlayer(win *pixelgl.Window, spriteSheet pixel.Picture) (*Player){ +func NewPlayer(win *pixelgl.Window, spriteSheet pixel.Picture) Player { var p Player - p.X = win.Bounds().Max.X/2 - p.Y = win.Bounds().Max.Y/2 + p.X = win.Bounds().Max.X / 2 + p.Y = win.Bounds().Max.Y / 2 p.PlayerVec = pixel.Vec{ - X:win.Bounds().Max.X/2, - Y:win.Bounds().Max.Y/2, + X: win.Bounds().Max.X / 2, + Y: win.Bounds().Max.Y / 2, } p.sprFrame = 9 p.spriteSheet = spriteSheet p.sprFrames = createSpriteFrames(spriteSheet) p.sprite = pixel.NewSprite(spriteSheet, p.sprFrames[p.sprFrame]) p.speed = 10.0 - return &p + return p } func (p *Player) Update(win *pixelgl.Window, dt int64) { var vecX, vecY float64 = 0, 0 speed := p.speed - - if win.Pressed(pixelgl.KeyA) { //left p.sprFrame = 6 vecX -= speed @@ -64,7 +62,7 @@ func (p *Player) Render(win *pixelgl.Window) { //include batch later p.sprite.Draw(win, pixel.IM.Scaled(pixel.ZV, 4).Moved(p.PlayerVec)) } -func createSpriteFrames(spriteSheet pixel.Picture) ([]pixel.Rect) { +func createSpriteFrames(spriteSheet pixel.Picture) []pixel.Rect { var sprFrames []pixel.Rect var frameHeight, frameWidth float64 = 96, 96 for y := spriteSheet.Bounds().Min.Y; y < frameHeight*4; y += 96 { @@ -73,4 +71,4 @@ func createSpriteFrames(spriteSheet pixel.Picture) ([]pixel.Rect) { } } return sprFrames -} \ No newline at end of file +} From c9feadf5478dc721692e0523ec04b21a73aac9fd Mon Sep 17 00:00:00 2001 From: mollusk Date: Wed, 24 Jan 2018 05:56:48 -0700 Subject: [PATCH 6/7] Animate sprite --- gameobjects/animate.go | 76 ++++++++++++++++++++++++++++++++++++++++++ gameobjects/player.go | 24 +++++++++---- main.go | 10 +++--- 3 files changed, 99 insertions(+), 11 deletions(-) create mode 100644 gameobjects/animate.go diff --git a/gameobjects/animate.go b/gameobjects/animate.go new file mode 100644 index 0000000..79aef2a --- /dev/null +++ b/gameobjects/animate.go @@ -0,0 +1,76 @@ +package gameobjects + +import ( + "github.com/faiface/pixel" + "github.com/faiface/pixel/pixelgl" +) + +type Animate struct { + //PlayerVec pixel.Vec + Sprite *pixel.Sprite + Up []pixel.Rect + Down []pixel.Rect + Left []pixel.Rect + Right []pixel.Rect + Idle bool + Dir int + Frame int + Current []pixel.Rect + SprSheet pixel.Picture +} + +func NewAnimation(spriteSheet pixel.Picture, sprFrames []pixel.Rect) Animate { + var animation Animate + for i := 0; i < 3; i++ { + animation.Up = append(animation.Up, sprFrames[i]) + } + for i := 3; i < 6; i++ { + animation.Right = append(animation.Right, sprFrames[i]) + } + for i := 6; i < 9; i++ { + animation.Left = append(animation.Left, sprFrames[i]) + } + for i := 9; i < 12; i++ { + animation.Down = append(animation.Down, sprFrames[i]) + } + + animation.Current = animation.Down + animation.SprSheet = spriteSheet + animation.Sprite = pixel.NewSprite(spriteSheet, animation.Current[0]) + animation.Frame = 0 + animation.Idle = false + return animation +} + +var elapsedTime int64 = 0 + +func (a *Animate) Update(dt int64) { + var direction int = a.Dir + switch direction { + case 0: + a.Current = a.Up + case 1: + a.Current = a.Down + case 2: + a.Current = a.Left + case 3: + a.Current = a.Right + } + elapsedTime += dt + if elapsedTime >= 1000000000/10 { + a.Frame++ + elapsedTime -= 1000000000 / 10 + } + if a.Frame >= 3 { + a.Frame = 0 + } + if a.Idle { + a.Frame = 0 + } + a.Sprite.Set(a.SprSheet, a.Current[a.Frame]) +} + +func (a *Animate) Render(win *pixelgl.Window, pVec pixel.Vec) { + a.Sprite.Draw(win, pixel.IM.Scaled(pixel.ZV, 4).Moved(pVec)) + +} diff --git a/gameobjects/player.go b/gameobjects/player.go index bf6d40b..e468d4c 100644 --- a/gameobjects/player.go +++ b/gameobjects/player.go @@ -7,19 +7,18 @@ import ( ) type Player struct { - X, Y float64 PlayerVec pixel.Vec sprFrame int spriteSheet pixel.Picture sprFrames []pixel.Rect sprite *pixel.Sprite speed float64 + dir int + animation Animate } func NewPlayer(win *pixelgl.Window, spriteSheet pixel.Picture) Player { var p Player - p.X = win.Bounds().Max.X / 2 - p.Y = win.Bounds().Max.Y / 2 p.PlayerVec = pixel.Vec{ X: win.Bounds().Max.X / 2, Y: win.Bounds().Max.Y / 2, @@ -27,7 +26,8 @@ func NewPlayer(win *pixelgl.Window, spriteSheet pixel.Picture) Player { p.sprFrame = 9 p.spriteSheet = spriteSheet p.sprFrames = createSpriteFrames(spriteSheet) - p.sprite = pixel.NewSprite(spriteSheet, p.sprFrames[p.sprFrame]) + p.animation = NewAnimation(p.spriteSheet, p.sprFrames) + //p.sprite = pixel.NewSprite(spriteSheet, p.sprFrames[p.sprFrame]) p.speed = 10.0 return p } @@ -38,28 +38,40 @@ func (p *Player) Update(win *pixelgl.Window, dt int64) { if win.Pressed(pixelgl.KeyA) { //left p.sprFrame = 6 + p.dir = 2 vecX -= speed } if win.Pressed(pixelgl.KeyD) { //Right p.sprFrame = 3 + p.dir = 3 vecX += speed } if win.Pressed(pixelgl.KeyS) { //Down p.sprFrame = 9 + p.dir = 1 vecY -= speed } if win.Pressed(pixelgl.KeyW) { //up p.sprFrame = 0 + p.dir = 0 vecY += speed } - p.sprite.Set(p.spriteSheet, p.sprFrames[p.sprFrame]) + if vecY == 0 && vecX == 0 { + p.animation.Idle = true + } else { + p.animation.Idle = false + } + //p.sprite.Set(p.spriteSheet, p.sprFrames[p.sprFrame]) + p.animation.Dir = p.dir + p.animation.Update(dt) p.PlayerVec.X += vecX p.PlayerVec.Y += vecY } func (p *Player) Render(win *pixelgl.Window) { //include batch later - p.sprite.Draw(win, pixel.IM.Scaled(pixel.ZV, 4).Moved(p.PlayerVec)) + //p.sprite.Draw(win, pixel.IM.Scaled(pixel.ZV, 4).Moved(p.PlayerVec)) + p.animation.Render(win, p.PlayerVec) } func createSpriteFrames(spriteSheet pixel.Picture) []pixel.Rect { diff --git a/main.go b/main.go index 6714652..748bbfe 100644 --- a/main.go +++ b/main.go @@ -9,10 +9,10 @@ import ( _ "image/png" + "gitbutter.pw/zolfite/project-rpg/gameobjects" "github.com/faiface/pixel" "github.com/faiface/pixel/pixelgl" "golang.org/x/image/colornames" - "gitbutter.pw/zolfite/project-rpg/gameobjects" ) func loadPicture(path string) (pixel.Picture, error) { @@ -54,7 +54,7 @@ func run() { //batch := pixel.NewBatch(&pixel.TrianglesData{}, spritesheet) var ( - camPos = pixel.ZV + camPos = pixel.ZV camZoom = 0.3 camZoomSpeed = 1.2 ) @@ -85,9 +85,9 @@ func run() { cam := pixel.IM.Scaled(camPos, camZoom).Moved(win.Bounds().Center().Sub(camPos)) win.SetMatrix(cam) - + player.Update(win, dt) - + camPos.X = player.PlayerVec.X camPos.Y = player.PlayerVec.Y camZoom *= math.Pow(camZoomSpeed, win.MouseScroll().Y) @@ -103,7 +103,7 @@ func run() { win.Update() // *** Render End *** // - + dt = 0 frames++ select { case <-second: From 64d89077414fb63f007337688efd4ce82ac48b35 Mon Sep 17 00:00:00 2001 From: Jalen Winslow Date: Wed, 24 Jan 2018 06:04:24 -0700 Subject: [PATCH 7/7] added speed to animation --- gameobjects/animate.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gameobjects/animate.go b/gameobjects/animate.go index 79aef2a..66c866b 100644 --- a/gameobjects/animate.go +++ b/gameobjects/animate.go @@ -17,6 +17,7 @@ type Animate struct { Frame int Current []pixel.Rect SprSheet pixel.Picture + Speed int64 } func NewAnimation(spriteSheet pixel.Picture, sprFrames []pixel.Rect) Animate { @@ -39,6 +40,7 @@ func NewAnimation(spriteSheet pixel.Picture, sprFrames []pixel.Rect) Animate { animation.Sprite = pixel.NewSprite(spriteSheet, animation.Current[0]) animation.Frame = 0 animation.Idle = false + animation.Speed = 6 return animation } @@ -57,9 +59,9 @@ func (a *Animate) Update(dt int64) { a.Current = a.Right } elapsedTime += dt - if elapsedTime >= 1000000000/10 { + if elapsedTime >= 1000000000/ a.Speed{ a.Frame++ - elapsedTime -= 1000000000 / 10 + elapsedTime -= 1000000000 / a.Speed } if a.Frame >= 3 { a.Frame = 0