limits and physics
This commit is contained in:
@@ -3,9 +3,24 @@ extends CharacterBody2D
|
||||
const SPEED: int = 500
|
||||
|
||||
@onready var animated_sprite: AnimatedSprite2D = $AnimatedSprite2D
|
||||
@onready var cam: Camera2D = $Camera2D
|
||||
@export var tilemap: TileMapLayer
|
||||
var tilesize: int = 32
|
||||
var position_limit_rect: Rect2
|
||||
|
||||
func _ready() -> void:
|
||||
var used_tilemap_rect: Rect2i = tilemap.get_used_rect()
|
||||
tilesize = tilemap.tile_set.tile_size.x
|
||||
cam.limit_left = used_tilemap_rect.position.x * tilesize
|
||||
cam.limit_top = used_tilemap_rect.position.y * tilesize
|
||||
cam.limit_right = (used_tilemap_rect.size.x - 1) * tilesize
|
||||
cam.limit_bottom = (used_tilemap_rect.size.y - 1) * tilesize
|
||||
position_limit_rect.position = Vector2(cam.limit_left + float(tilesize) / 4, cam.limit_top + float(tilesize) / 2)
|
||||
position_limit_rect.size = Vector2(cam.limit_right - float(tilesize) / 4, cam.limit_bottom - float(tilesize) / 2)
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
velocity = Input.get_vector("move_left","move_right","move_up","move_down").normalized() * delta * SPEED * 3
|
||||
position = position.clamp(position_limit_rect.position, position_limit_rect.size)
|
||||
move_and_slide()
|
||||
|
||||
animated_sprite.flip_h = velocity.x < 0
|
||||
|
||||
Reference in New Issue
Block a user