From d025a7233ee91b14b59f53c9e9fcdb51bd8e64f9 Mon Sep 17 00:00:00 2001 From: Physcik Date: Fri, 23 Jan 2026 01:27:03 +0500 Subject: Player texture offset --- engine/Components/Player.go | 23 +++++++++++++++++++---- 1 file 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 +} -- cgit v1.3