diff options
| author | Physcik <mynameisgennadiy@vk.com> | 2026-01-23 01:27:03 +0500 |
|---|---|---|
| committer | Physcik <mynameisgennadiy@vk.com> | 2026-01-23 01:27:03 +0500 |
| commit | d025a7233ee91b14b59f53c9e9fcdb51bd8e64f9 (patch) | |
| tree | f138671f7d15690f1f2a58b7fae427a06912a80e /engine/Components | |
| parent | 7a0c4891275c913c23469d42bb1c3e0e9ca35cf8 (diff) | |
Player texture offset
Diffstat (limited to 'engine/Components')
| -rw-r--r-- | engine/Components/Player.go | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/engine/Components/Player.go b/engine/Components/Player.go index cb8d459..0b01184 100644 --- a/engine/Components/Player.go +++ b/engine/Components/Player.go @@ -8,6 +8,11 @@ import ( rl "github.com/gen2brain/raylib-go/raylib" ) +// TODO: Change this to be determined by package +const playerHeight int32 = 32 +// TODO: Change this to be determined by package +const playerWidth int32 = 32 + type Player struct { ParentScene *World Position rl.Vector2 @@ -24,7 +29,8 @@ func (base *Player) Init(manager coreobjects.SceneManager) { base.Collider = (&coreobjects.BoxCollider{}).Init( base.Position.X, base.Position.Y, - 32, 32) // TODO: Change this to player description + float32(playerWidth), + float32(playerHeight)) } // Tries to set a parent scene as a world and returns an error if failed @@ -69,9 +75,10 @@ func (base *Player) Update() { } func (base *Player) Draw() { + var xOffset, yOffset = base.getSpriteOffset() rl.DrawTexture(base.Texture, - int32(base.Position.X), - int32(base.Position.Y), + int32(base.Position.X) - xOffset, + int32(base.Position.Y) - yOffset, rl.White) if settings.State.DrawColliders { base.Collider.Draw() @@ -79,7 +86,7 @@ func (base *Player) Draw() { } // Centers the camera center to the player -func (base Player) SnapCamera(camera *rl.Camera2D) { +func (base *Player) SnapCamera(camera *rl.Camera2D) { var offset = rl.Vector2 { X: float32(base.Texture.Width) / 2, Y: float32(base.Texture.Height) / 2, @@ -88,3 +95,11 @@ func (base Player) SnapCamera(camera *rl.Camera2D) { camera.Offset.X = float32(int32(rl.GetScreenWidth() / 2)) camera.Offset.Y = float32(int32(rl.GetScreenHeight() / 2)) } + +// If the player model size doesn't align with the sprite this function will +// return the offset +func (base *Player) getSpriteOffset() (int32, int32) { + var y = base.Texture.Height - playerHeight + var x = (base.Texture.Width - playerWidth) / 2 + return x, y +} |
