Compare commits

...

1 Commits

Author SHA1 Message Date
46889c32f3 adding character autopilot 2026-04-07 09:43:49 -04:00
5 changed files with 69 additions and 35 deletions

View File

@ -454,7 +454,7 @@ script = ExtResource("2_iywne")
[node name="TileMapLayer" type="TileMapLayer" parent="." unique_id=55809753] [node name="TileMapLayer" type="TileMapLayer" parent="." unique_id=55809753]
texture_filter = 1 texture_filter = 1
tile_map_data = PackedByteArray("AAAVAAwAAQAAAAQAAAAWAAwAAQABAAQAAAAXAAwAAQACAAQAAAAIAA0AAQAEAAEAAAAIAAwAAQAGAAMAAAAIAAsAAQAAAAAAAAAJAAsAAQABAAAAAAAJAAwAAQABAAIAAAAKAAwAAQAHAAAAAAAKAAsAAQABAAAAAAALAAsAAQACAAAAAAALAAwAAQACAAEAAAALAA0AAQACAAIAAAAKAA0AAQAAAAIAAAAOAAoAAQAAAAQAAAAPAAoAAQABAAQAAAAQAAoAAQACAAQAAAAVAAsAAwAAAAAAAAAXAAsAAgAAAAEAAAAXAAoAAgAAAAAAAAAWAAsAAgAAAAEAAAAWAAoAAgAAAAAAAAAIAA4AAQAEAAEAAAApAA4AAQAAAAAAAAAqAA4AAQABAAAAAAArAA4AAQABAAAAAAAsAA4AAQABAAAAAAAsAA8AAQABAAIAAAAtAA8AAQABAAIAAAAtAA4AAQABAAAAAAAuAA4AAQACAAAAAAACAA8AAQAAAAQAAAADAA8AAQABAAQAAAAEAA8AAQABAAQAAAAFAA8AAQABAAQAAAAGAA8AAQABAAQAAAAHAA8AAQABAAQAAAAIAA8AAQAMAAAAAAAJAA8AAQABAAAAAAAKAA8AAQABAAAAAAALAA8AAQABAAAAAAAMAA8AAQABAAAAAAANAA8AAQABAAAAAAAOAA8AAQABAAAAAAAPAA8AAQABAAAAAAAQAA8AAQABAAAAAAARAA8AAQABAAAAAAASAA8AAQABAAAAAAATAA8AAQABAAAAAAAUAA8AAQABAAAAAAAVAA8AAQABAAAAAAAWAA8AAQABAAAAAAAXAA8AAQABAAAAAAAYAA8AAQABAAAAAAAZAA8AAQABAAAAAAAaAA8AAQABAAAAAAAbAA8AAQABAAAAAAAcAA8AAQABAAAAAAAdAA8AAQABAAAAAAAeAA8AAQABAAAAAAAfAA8AAQABAAAAAAAgAA8AAQABAAAAAAAhAA8AAQABAAAAAAAiAA8AAQAJAAMAAAAjAA8AAQABAAQAAAAkAA8AAQABAAQAAAAlAA8AAQABAAQAAAAmAA8AAQABAAQAAAAnAA8AAQABAAQAAAAoAA8AAQABAAQAAAApAA8AAQAKAAQAAAAqAA8AAQABAAIAAAArAA8AAQABAAIAAAAuAA8AAQAJAAQAAAAvAA8AAQABAAQAAAAwAA8AAQABAAQAAAAxAA8AAQABAAQAAAAyAA8AAQABAAQAAAAzAA8AAQABAAQAAAA0AA8AAQABAAQAAAA1AA8AAQABAAQAAAA2AA8AAQABAAQAAAA3AA8AAQABAAQAAAA4AA8AAQABAAQAAAA5AA8AAQABAAQAAAA6AA8AAQABAAQAAAA7AA8AAQABAAQAAAA8AA8AAQABAAQAAAA9AA8AAQABAAQAAAA+AA8AAQABAAQAAAA/AA8AAQABAAQAAABAAA8AAQABAAQAAABBAA8AAQABAAQAAABCAA8AAQABAAQAAABDAA8AAQABAAQAAABEAA8AAQABAAQAAABFAA8AAQABAAQAAABGAA8AAQABAAQAAABHAA8AAQACAAQAAAAZAAoAAQAAAAQAAAAaAAoAAQABAAQAAAAbAAoAAQAQAAQAAAAbAAkAAQAPAAMAAAAcAAkAAQACAAQAAAAdAAcAAQAAAAQAAAAeAAcAAQABAAQAAAAfAAcAAQABAAQAAAAgAAcAAQACAAQAAAAaAAUAAQACAAQAAAAZAAUAAQAPAAQAAAAZAAQAAQAQAAMAAAAYAAQAAQABAAQAAAAXAAQAAQAAAAQAAAAiABMAAQACAAIAAAAiABIAAQACAAEAAAAiABEAAQACAAEAAAAiABAAAQACAAEAAAAhABMAAQABAAIAAAAhABIAAQABAAEAAAAhABEAAQABAAEAAAAhABAAAQABAAEAAAAgABMAAQABAAIAAAAgABIAAQABAAEAAAAgABEAAQABAAEAAAAgABAAAQABAAEAAAAfABMAAQABAAIAAAAfABIAAQABAAEAAAAfABEAAQABAAEAAAAfABAAAQABAAEAAAAeABMAAQABAAIAAAAeABIAAQABAAEAAAAeABEAAQABAAEAAAAeABAAAQABAAEAAAAdABMAAQABAAIAAAAdABIAAQABAAEAAAAdABEAAQABAAEAAAAdABAAAQABAAEAAAAcABMAAQABAAIAAAAcABIAAQABAAEAAAAcABEAAQABAAEAAAAcABAAAQABAAEAAAAbABMAAQABAAIAAAAbABIAAQABAAEAAAAbABEAAQABAAEAAAAbABAAAQABAAEAAAAaABMAAQABAAIAAAAaABIAAQABAAEAAAAaABEAAQABAAEAAAAaABAAAQABAAEAAAAZABMAAQABAAIAAAAZABIAAQABAAEAAAAZABEAAQABAAEAAAAZABAAAQABAAEAAAAYABMAAQABAAIAAAAYABIAAQABAAEAAAAYABEAAQABAAEAAAAYABAAAQABAAEAAAAXABMAAQABAAIAAAAXABIAAQABAAEAAAAXABEAAQABAAEAAAAXABAAAQABAAEAAAAWABMAAQABAAIAAAAWABIAAQABAAEAAAAWABEAAQABAAEAAAAWABAAAQABAAEAAAAVABMAAQABAAIAAAAVABIAAQABAAEAAAAVABEAAQABAAEAAAAVABAAAQABAAEAAAAUABMAAQABAAIAAAAUABIAAQABAAEAAAAUABEAAQABAAEAAAAUABAAAQABAAEAAAATABMAAQABAAIAAAATABIAAQABAAEAAAATABEAAQABAAEAAAATABAAAQABAAEAAAASABMAAQABAAIAAAASABIAAQABAAEAAAASABEAAQABAAEAAAASABAAAQABAAEAAAARABMAAQABAAIAAAARABIAAQABAAEAAAARABEAAQABAAEAAAARABAAAQABAAEAAAAQABMAAQABAAIAAAAQABIAAQABAAEAAAAQABEAAQABAAEAAAAQABAAAQABAAEAAAAPABMAAQABAAIAAAAPABIAAQABAAEAAAAPABEAAQABAAEAAAAPABAAAQABAAEAAAAOABMAAQABAAIAAAAOABIAAQABAAEAAAAOABEAAQABAAEAAAAOABAAAQABAAEAAAANABMAAQABAAIAAAANABIAAQABAAEAAAANABEAAQABAAEAAAANABAAAQABAAEAAAAMABMAAQABAAIAAAAMABIAAQABAAEAAAAMABEAAQABAAEAAAAMABAAAQABAAEAAAALABMAAQABAAIAAAALABIAAQABAAEAAAALABEAAQABAAEAAAALABAAAQABAAEAAAAKABMAAQABAAIAAAAKABIAAQABAAEAAAAKABEAAQABAAEAAAAKABAAAQABAAEAAAAJABMAAQABAAIAAAAJABIAAQABAAEAAAAJABEAAQABAAEAAAAJABAAAQABAAEAAAAIABMAAQAAAAIAAAAIABIAAQAAAAEAAAAIABEAAQAAAAEAAAAIABAAAQAAAAEAAAA=") tile_map_data = PackedByteArray("AAAVAAwAAQAAAAQAAAAWAAwAAQABAAQAAAAXAAwAAQACAAQAAAAIAA0AAQAEAAEAAAAIAAwAAQAGAAMAAAAIAAsAAQAAAAAAAAAJAAsAAQABAAAAAAAJAAwAAQABAAIAAAAKAAwAAQAHAAAAAAAKAAsAAQABAAAAAAALAAsAAQACAAAAAAALAAwAAQACAAEAAAALAA0AAQACAAIAAAAKAA0AAQAAAAIAAAAOAAoAAQAAAAQAAAAPAAoAAQABAAQAAAAQAAoAAQACAAQAAAAVAAsAAwAAAAAAAAAXAAsAAgAAAAEAAAAXAAoAAgAAAAAAAAAWAAsAAgAAAAEAAAAWAAoAAgAAAAAAAAAIAA4AAQAEAAEAAAApAA4AAQAAAAAAAAAqAA4AAQABAAAAAAArAA4AAQABAAAAAAAsAA4AAQABAAAAAAAsAA8AAQABAAIAAAAtAA8AAQABAAIAAAAtAA4AAQABAAAAAAAuAA4AAQACAAAAAAACAA8AAQAAAAIAAAADAA8AAQABAAIAAAAEAA8AAQABAAIAAAAFAA8AAQAJAAQAAAAGAA8AAQABAAQAAAAHAA8AAQABAAQAAAAIAA8AAQAMAAAAAAAJAA8AAQABAAAAAAAKAA8AAQABAAAAAAALAA8AAQABAAAAAAAMAA8AAQABAAAAAAANAA8AAQABAAAAAAAOAA8AAQABAAAAAAAPAA8AAQABAAAAAAAQAA8AAQABAAAAAAARAA8AAQABAAAAAAASAA8AAQABAAAAAAATAA8AAQABAAAAAAAUAA8AAQABAAAAAAAVAA8AAQABAAAAAAAWAA8AAQABAAAAAAAXAA8AAQABAAAAAAAYAA8AAQABAAAAAAAZAA8AAQABAAAAAAAaAA8AAQABAAAAAAAbAA8AAQABAAAAAAAcAA8AAQABAAAAAAAdAA8AAQABAAAAAAAeAA8AAQABAAAAAAAfAA8AAQABAAAAAAAgAA8AAQABAAAAAAAhAA8AAQABAAAAAAAiAA8AAQAJAAMAAAAjAA8AAQABAAQAAAAkAA8AAQABAAQAAAAlAA8AAQABAAQAAAAmAA8AAQABAAQAAAAnAA8AAQABAAQAAAAoAA8AAQABAAQAAAApAA8AAQAKAAQAAAAqAA8AAQABAAIAAAArAA8AAQABAAIAAAAuAA8AAQAJAAQAAAAvAA8AAQABAAQAAAAwAA8AAQABAAQAAAAxAA8AAQABAAQAAAAyAA8AAQABAAQAAAAzAA8AAQABAAQAAAA0AA8AAQABAAQAAAA1AA8AAQABAAQAAAA2AA8AAQABAAQAAAA3AA8AAQABAAQAAAA4AA8AAQABAAQAAAA5AA8AAQABAAQAAAA6AA8AAQABAAQAAAA7AA8AAQABAAQAAAA8AA8AAQABAAQAAAA9AA8AAQABAAQAAAA+AA8AAQABAAQAAAA/AA8AAQABAAQAAABAAA8AAQABAAQAAABBAA8AAQABAAQAAABCAA8AAQABAAQAAABDAA8AAQABAAQAAABEAA8AAQABAAQAAABFAA8AAQABAAQAAABGAA8AAQABAAQAAABHAA8AAQACAAQAAAAZAAoAAQAAAAQAAAAaAAoAAQABAAQAAAAbAAoAAQAQAAQAAAAbAAkAAQAPAAMAAAAcAAkAAQACAAQAAAAdAAcAAQAAAAQAAAAeAAcAAQABAAQAAAAfAAcAAQABAAQAAAAgAAcAAQACAAQAAAAaAAUAAQACAAQAAAAZAAUAAQAPAAQAAAAZAAQAAQAQAAMAAAAYAAQAAQABAAQAAAAXAAQAAQAAAAQAAAAiABMAAQACAAIAAAAiABIAAQACAAEAAAAiABEAAQACAAEAAAAiABAAAQACAAEAAAAhABMAAQABAAIAAAAhABIAAQABAAEAAAAhABEAAQABAAEAAAAhABAAAQABAAEAAAAgABMAAQABAAIAAAAgABIAAQABAAEAAAAgABEAAQABAAEAAAAgABAAAQABAAEAAAAfABMAAQABAAIAAAAfABIAAQABAAEAAAAfABEAAQABAAEAAAAfABAAAQABAAEAAAAeABMAAQABAAIAAAAeABIAAQABAAEAAAAeABEAAQABAAEAAAAeABAAAQABAAEAAAAdABMAAQABAAIAAAAdABIAAQABAAEAAAAdABEAAQABAAEAAAAdABAAAQABAAEAAAAcABMAAQABAAIAAAAcABIAAQABAAEAAAAcABEAAQABAAEAAAAcABAAAQABAAEAAAAbABMAAQABAAIAAAAbABIAAQABAAEAAAAbABEAAQABAAEAAAAbABAAAQABAAEAAAAaABMAAQABAAIAAAAaABIAAQABAAEAAAAaABEAAQABAAEAAAAaABAAAQABAAEAAAAZABMAAQABAAIAAAAZABIAAQABAAEAAAAZABEAAQABAAEAAAAZABAAAQABAAEAAAAYABMAAQABAAIAAAAYABIAAQABAAEAAAAYABEAAQABAAEAAAAYABAAAQABAAEAAAAXABMAAQABAAIAAAAXABIAAQABAAEAAAAXABEAAQABAAEAAAAXABAAAQABAAEAAAAWABMAAQABAAIAAAAWABIAAQABAAEAAAAWABEAAQABAAEAAAAWABAAAQABAAEAAAAVABMAAQABAAIAAAAVABIAAQABAAEAAAAVABEAAQABAAEAAAAVABAAAQABAAEAAAAUABMAAQABAAIAAAAUABIAAQABAAEAAAAUABEAAQABAAEAAAAUABAAAQABAAEAAAATABMAAQABAAIAAAATABIAAQABAAEAAAATABEAAQABAAEAAAATABAAAQABAAEAAAASABMAAQABAAIAAAASABIAAQABAAEAAAASABEAAQABAAEAAAASABAAAQABAAEAAAARABMAAQABAAIAAAARABIAAQABAAEAAAARABEAAQABAAEAAAARABAAAQABAAEAAAAQABMAAQABAAIAAAAQABIAAQABAAEAAAAQABEAAQABAAEAAAAQABAAAQABAAEAAAAPABMAAQABAAIAAAAPABIAAQABAAEAAAAPABEAAQABAAEAAAAPABAAAQABAAEAAAAOABMAAQABAAIAAAAOABIAAQABAAEAAAAOABEAAQABAAEAAAAOABAAAQABAAEAAAANABMAAQABAAIAAAANABIAAQABAAEAAAANABEAAQABAAEAAAANABAAAQABAAEAAAAMABMAAQABAAIAAAAMABIAAQABAAEAAAAMABEAAQABAAEAAAAMABAAAQABAAEAAAALABMAAQABAAIAAAALABIAAQABAAEAAAALABEAAQABAAEAAAALABAAAQABAAEAAAAKABMAAQABAAIAAAAKABIAAQABAAEAAAAKABEAAQABAAEAAAAKABAAAQABAAEAAAAJABMAAQABAAIAAAAJABIAAQABAAEAAAAJABEAAQABAAEAAAAJABAAAQABAAEAAAAIABMAAQAAAAIAAAAIABIAAQAAAAEAAAAIABEAAQAAAAEAAAAIABAAAQAAAAEAAAAFAA4AAQACAAAAAAAEAA4AAQABAAAAAAADAA4AAQABAAAAAAACAA4AAQAKAAMAAAABAA4AAQAPAAQAAAABAA0AAQAEAAEAAAABAAwAAQAQAAMAAAAAAAwAAQAPAAQAAAAAAAsAAQAEAAEAAAAEAAsAAQAAAAQAAAAFAAsAAQACAAQAAAAAAAoAAQAEAAEAAAAAAAkAAQAEAAEAAAAAAAgAAQAPAAMAAAABAAgAAQACAAQAAAA=")
tile_set = SubResource("TileSet_0tnpc") tile_set = SubResource("TileSet_0tnpc")
[node name="Player" parent="." unique_id=161143934 instance=ExtResource("3_iywne")] [node name="Player" parent="." unique_id=161143934 instance=ExtResource("3_iywne")]
@ -483,7 +483,7 @@ position = Vector2(690, 346)
position = Vector2(580, 400) position = Vector2(580, 400)
[node name="Crate3" parent="Crates" unique_id=1771442258 instance=ExtResource("2_lnu2h")] [node name="Crate3" parent="Crates" unique_id=1771442258 instance=ExtResource("2_lnu2h")]
position = Vector2(575, 255) position = Vector2(104, 246)
[node name="Crate4" parent="Crates" unique_id=34543093 instance=ExtResource("2_lnu2h")] [node name="Crate4" parent="Crates" unique_id=34543093 instance=ExtResource("2_lnu2h")]
position = Vector2(609, 394) position = Vector2(609, 394)
@ -498,12 +498,12 @@ metadata/_edit_group_ = true
shape = SubResource("WorldBoundaryShape2D_lbhrr") shape = SubResource("WorldBoundaryShape2D_lbhrr")
[node name="NPCCharacter" parent="." unique_id=597270257 instance=ExtResource("6_u5sy4")] [node name="NPCCharacter" parent="." unique_id=597270257 instance=ExtResource("6_u5sy4")]
position = Vector2(103, 417) position = Vector2(-67, 375)
[node name="Coins" type="Node2D" parent="." unique_id=1168180087] [node name="Coins" type="Node2D" parent="." unique_id=1168180087]
[node name="Coin" parent="Coins" unique_id=716723108 instance=ExtResource("13_trtic")] [node name="Coin" parent="Coins" unique_id=716723108 instance=ExtResource("13_trtic")]
position = Vector2(501, 461) position = Vector2(160, 342)
[node name="Coin2" parent="Coins" unique_id=63477808 instance=ExtResource("13_trtic")] [node name="Coin2" parent="Coins" unique_id=63477808 instance=ExtResource("13_trtic")]
position = Vector2(574, 459) position = Vector2(574, 459)
@ -514,7 +514,7 @@ position = Vector2(513, 308)
[node name="Slimes" type="Node2D" parent="." unique_id=48874920] [node name="Slimes" type="Node2D" parent="." unique_id=48874920]
[node name="Slime" parent="Slimes" unique_id=525177366 instance=ExtResource("14_trtic")] [node name="Slime" parent="Slimes" unique_id=525177366 instance=ExtResource("14_trtic")]
position = Vector2(270, 344) position = Vector2(707, 376)
[node name="Slime3" parent="Slimes" unique_id=957608778 instance=ExtResource("14_trtic")] [node name="Slime3" parent="Slimes" unique_id=957608778 instance=ExtResource("14_trtic")]
position = Vector2(494, 311) position = Vector2(494, 311)

View File

@ -201,4 +201,10 @@ autoplay = "idle"
[node name="Camera2D" type="Camera2D" parent="." unique_id=453583176] [node name="Camera2D" type="Camera2D" parent="." unique_id=453583176]
offset = Vector2(0, -30) offset = Vector2(0, -30)
[node name="RightDownCast" type="RayCast2D" parent="." unique_id=348369067]
target_position = Vector2(17, 12)
[node name="LeftDownCast" type="RayCast2D" parent="." unique_id=96701627]
target_position = Vector2(-14, 12)
[connection signal="animation_finished" from="PlayerGraphic" to="." method="_on_animation_finished"] [connection signal="animation_finished" from="PlayerGraphic" to="." method="_on_animation_finished"]

View File

@ -46,13 +46,11 @@ func _process(delta: float) -> void:
func _on_trigger(body: Variant, effect, trigger) -> void: func _on_trigger(body: Variant, effect, trigger) -> void:
print("GC knows trigger...."+effect)
if body is Crate: if body is Crate:
match effect: match effect:
"destroy": "destroy":
destroySignal.emit(body) destroySignal.emit(body)
"teleport": "teleport":
print("GC teleport an object")
teleportSignal.emit(body) teleportSignal.emit(body)
if body is Player: if body is Player:
@ -64,7 +62,6 @@ func _on_trigger(body: Variant, effect, trigger) -> void:
func crateUpdate(cratesAmount)->void: func crateUpdate(cratesAmount)->void:
crateTotal = cratesAmount crateTotal = cratesAmount
print("GC updated crates: "+str(crateTotal))
if crateTotal <=0: if crateTotal <=0:
print("You WON!!!") print("You WON!!!")
currentLevel +=1 currentLevel +=1
@ -84,12 +81,10 @@ func bulletDamage(body:Node2D, bullet:Bullet)->void:
destroySignal.emit(bullet) destroySignal.emit(bullet)
func _on_coin_collected(body:Node2D, coin:Coin)->void: func _on_coin_collected(body:Node2D, coin:Coin)->void:
print("GC knows coin collected")
coinsCollected +=1 coinsCollected +=1
destroySignal.emit(coin) destroySignal.emit(coin)
func totalCoins(value)->void: func totalCoins(value)->void:
print("GC knows coins remaining "+str(value))
if value <=0: if value <=0:
#no coins left in level #no coins left in level
currentLevel +=1 currentLevel +=1
@ -99,8 +94,6 @@ func totalCoins(value)->void:
func _on_slime_damage(body:Node2D, slime:Slime)->void: func _on_slime_damage(body:Node2D, slime:Slime)->void:
playerHealth -= enemiesDict[slime]["damage"] playerHealth -= enemiesDict[slime]["damage"]
print("GC knows damage from slime "+str(enemiesDict[slime]["damage"]))
print("GC knows slime damage to player "+str(playerHealth))
if playerHealth <=0: if playerHealth <=0:
print("YOU DED") print("YOU DED")
levelChangeSignal.emit(levels[currentLevel]) levelChangeSignal.emit(levels[currentLevel])

View File

@ -3,6 +3,8 @@ class_name Player extends CharacterBody2D
@onready var right_target: Marker2D = $RightTarget @onready var right_target: Marker2D = $RightTarget
@onready var left_target: Marker2D = $LeftTarget @onready var left_target: Marker2D = $LeftTarget
@onready var player_graphic: AnimatedSprite2D = $PlayerGraphic @onready var player_graphic: AnimatedSprite2D = $PlayerGraphic
@onready var right_down_cast: RayCast2D = $RightDownCast
@onready var left_down_cast: RayCast2D = $LeftDownCast
const SPEED = 300.0 const SPEED = 300.0
@ -11,41 +13,66 @@ const BUMP_POWER = 50
enum FaceDirection{LEFT, RIGHT} enum FaceDirection{LEFT, RIGHT}
var facing:FaceDirection = FaceDirection.RIGHT var facing:FaceDirection = FaceDirection.RIGHT
var direction var direction
#awarness
var cliffEdge = false
enum PlayerState{IDLE,RUNNING, JUMPING, FALLING} enum PlayerState{IDLE,RUNNING, JUMPING, FALLING}
var current_player_state:PlayerState = PlayerState.IDLE var current_player_state:PlayerState = PlayerState.IDLE
var jumpUp:bool = false var jumpUp:bool = false
func _ready() -> void:
var timer = Timer.new()
add_child(timer)
timer.wait_time = 3.0 # Wait time in seconds
timer.one_shot = false # Set to false for repeating
timer.autostart = true # Start automatically on enter
timer.timeout.connect(handle_ai)
timer.start()
func _physics_process(delta: float) -> void: func _physics_process(delta: float) -> void:
handle_input() #handle_input()
handle_movement(delta) handle_movement(delta)
handle_state() handle_state()
handle_animation() handle_animation()
move_and_slide() move_and_slide()
handle_collisions() handle_collisions()
func handle_input()->void: func handle_ai()->void:
direction = Input.get_axis("ui_left", "ui_right") var ran = randi()%10
if direction <0: #running, idle
player_graphic.flip_h = true print("random number "+str(ran))
if direction >0: direction = 0
player_graphic.flip_h = false if ran<=4:
direction = -1
if ran>=7:
direction = 1
# Handle jump. #shooting
if Input.is_action_just_pressed("ui_accept") and is_on_floor(): var shootran = randi()%5
if shootran >3:
shoot()
func jump()->void:
if is_on_floor():
velocity.y = JUMP_VELOCITY velocity.y = JUMP_VELOCITY
current_player_state = PlayerState.JUMPING current_player_state = PlayerState.JUMPING
jumpUp = true jumpUp = true
# Handle Shoot func shoot()->void:
if Input.is_action_just_pressed("shoot"):
print("Player wants to shoot")
match facing: match facing:
FaceDirection.RIGHT: FaceDirection.RIGHT:
print("Shoot to the right")
%SceneManager.makeBullet(right_target.global_transform, 700) %SceneManager.makeBullet(right_target.global_transform, 700)
FaceDirection.LEFT: FaceDirection.LEFT:
print("Shoot to the left")
%SceneManager.makeBullet(left_target.global_transform, -700) %SceneManager.makeBullet(left_target.global_transform, -700)
func handle_input()->void:
direction = Input.get_axis("ui_left", "ui_right")
# Handle jump.
if Input.is_action_just_pressed("ui_accept"):
jump()
# Handle Shoot
if Input.is_action_just_pressed("shoot"):
shoot()
func handle_state()->void: func handle_state()->void:
match current_player_state: match current_player_state:
PlayerState.IDLE when velocity.x !=0: PlayerState.IDLE when velocity.x !=0:
@ -73,6 +100,7 @@ func handle_animation()->void:
player_graphic.play("falling") player_graphic.play("falling")
func handle_movement(delta)->void: func handle_movement(delta)->void:
# Add the gravity. # Add the gravity.
if not is_on_floor(): if not is_on_floor():
velocity += get_gravity() * delta velocity += get_gravity() * delta
@ -80,10 +108,13 @@ func handle_movement(delta)->void:
velocity.x = direction * SPEED velocity.x = direction * SPEED
if direction <0: if direction <0:
facing=FaceDirection.LEFT facing=FaceDirection.LEFT
player_graphic.flip_h = true
if direction >0: if direction >0:
facing=FaceDirection.RIGHT facing=FaceDirection.RIGHT
player_graphic.flip_h = false
else: else:
velocity.x = move_toward(velocity.x, 0, SPEED) velocity.x = move_toward(velocity.x, 0, SPEED)
func handle_collisions()->void: func handle_collisions()->void:
for i in get_slide_collision_count(): for i in get_slide_collision_count():
var c = get_slide_collision(i) var c = get_slide_collision(i)
@ -91,9 +122,16 @@ func handle_collisions()->void:
c.get_collider().apply_central_impulse(-c.get_normal()*BUMP_POWER) c.get_collider().apply_central_impulse(-c.get_normal()*BUMP_POWER)
if c.get_collider() is NPCCharacter: if c.get_collider() is NPCCharacter:
var myCharacter:NPCCharacter = c.get_collider() var myCharacter:NPCCharacter = c.get_collider()
var direction = -c.get_normal()*BUMP_POWER var mydirection = -c.get_normal()*BUMP_POWER
myCharacter.knockBack(direction) myCharacter.knockBack(mydirection)
if not right_down_cast.is_colliding() and is_on_floor():
#on edge of drop on right side
if velocity.x > 100:
jump()
if not left_down_cast.is_colliding() and is_on_floor():
#on edge of drop on left side
if velocity.x <-100:
jump()
func _on_animation_finished() -> void: func _on_animation_finished() -> void:
match current_player_state: match current_player_state:
PlayerState.JUMPING: PlayerState.JUMPING:

View File

@ -23,7 +23,6 @@ func _process(delta: float) -> void:
pass pass
func buildLevel()->void: func buildLevel()->void:
print("building level")
updateCrates() updateCrates()
updateTriggers() updateTriggers()
updateCoins() updateCoins()
@ -111,8 +110,6 @@ func bulletFactory()->Bullet :
bulletArray.push_front(myBullet) bulletArray.push_front(myBullet)
return myBullet return myBullet
func makeBullet(targetPosition, speed)->void: func makeBullet(targetPosition, speed)->void:
print("Make a bullet!")
print("bullets created: "+str( bulletArray.size() ))
var myBullet:Bullet = bulletFactory() var myBullet:Bullet = bulletFactory()
myBullet.transform = targetPosition myBullet.transform = targetPosition
myBullet.setSpeed(speed) myBullet.setSpeed(speed)