如何在golang ebitengine中移动带有wasd键的块,就像在平台上行走的角色一样,就像在Undertale等平台上行走的精灵一样,我正在学习ebitengine,它的文档很糟糕,有人可以帮忙吗?
package main
import (
"image/color"
"log"
"github.com/hajimehoshi/ebiten"
"github.com/hajimehoshi/ebiten/ebitenutil"
)
const (
screenWidth = 640
screenHeight = 480
playerSpeed = 4
playerSize = 32
)
type Player struct {
x, y float64
}
func (p *Player) Update() error {
if ebiten.IsKeyPressed(ebiten.KeyW) {
p.y -= playerSpeed
}
if ebiten.IsKeyPressed(ebiten.KeyS) {
p.y += playerSpeed
}
if ebiten.IsKeyPressed(ebiten.KeyA) {
p.x -= playerSpeed
}
if ebiten.IsKeyPressed(ebiten.KeyD) {
p.x += playerSpeed
}
p.x = 0
}
if p.x > float64(screenWidth-playerSize) {
p.x = float64(screenWidth - playerSize)
}
if p.y < 0 {
p.y = 0
}
if p.y > float64(screenHeight-playerSize) {
p.y = float64(screenHeight - playerSize)
}
return nil
}
func (p *Player) Draw(screen *ebiten.Image) {
ebitenutil.DrawRect(screen, p.x, p.y, playerSize, playerSize, color.White)
}
func main() {
if err := ebiten.Run(update, screenWidth, screenHeight, 2, "Ebiten WASD Movement"); err != nil {
log.Fatal(err)
}
}
func update(screen *ebiten.Image) error {
player := &Player{}
if err := player.Update(); err != nil {
return err
}
if ebiten.IsDrawingSkipped() {
return nil
}
screen.Clear()
player.Draw(screen)
return nil
}
就像这个 chatgpt 代码不起作用,它只是卡在一个角落里,块不会去任何地方
完全错误的代码,你不能使用 *ebiten.Image 进行更新??