Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class_name Player
- extends CharacterBody2D
- @export var speed : float = 50
- @onready var anim_tree = $AnimationTree
- @onready var anim_state = anim_tree.get("parameters/playback")
- enum player_states {MOVE, JUMP, SWIM}
- var current_states = player_states.MOVE
- var input_movement = Vector2.ZERO
- var playback : AnimationNodeStateMachinePlayback
- func _physics_process(_delta):
- match current_states:
- player_states.SWIM:
- swim()
- player_states.MOVE:
- move()
- player_states.JUMP:
- jump()
- func move():
- $Watertrail.emitting = false
- input_movement = Input.get_vector("left", "right", "up", "down")
- if input_movement != Vector2.ZERO:
- velocity = input_movement * speed
- anim_tree.set("parameters/Idle/BlendSpace2D/blend_position", input_movement)
- anim_tree.set("parameters/Walk/BlendSpace2D/blend_position", input_movement)
- anim_tree.set("parameters/Jump/BlendSpace2D/blend_position", input_movement)
- anim_tree.set("parameters/Swim/BlendSpace2D/blend_position", input_movement)
- anim_state.travel("Walk")
- velocity = input_movement * speed
- if input_movement == Vector2.ZERO:
- anim_state.travel("Idle")
- velocity = Vector2.ZERO
- if Input.is_action_just_pressed("jump"):
- current_states = player_states.JUMP
- move_and_slide()
- func jump():
- input_movement = Input.get_vector("left", "right", "up", "down")
- anim_state.travel("Jump")
- velocity = input_movement * speed
- move_and_slide()
- func on_states_reset():
- current_states = player_states.MOVE
- func clear_collision():
- $CollisionShape2D.disabled = true
- func create_collision():
- $CollisionShape2D.disabled = false
- current_states = player_states.MOVE
- func swim():
- input_movement = Input.get_vector("left", "right", "up", "down")
- if input_movement != Vector2.ZERO:
- velocity = input_movement * speed
- anim_tree.set("parameters/Idle/BlendSpace2D/blend_position", input_movement)
- anim_tree.set("parameters/Walk/BlendSpace2D/blend_position", input_movement)
- anim_tree.set("parameters/Jump/BlendSpace2D/blend_position", input_movement)
- anim_tree.set("parameters/Swim/BlendSpace2D/blend_position", input_movement)
- anim_state.travel("Swim")
- velocity = input_movement * speed
- if Input.is_action_just_pressed("jump") and current_states == player_states.SWIM:
- anim_state.travel("Jump")
- $Watertrail.emitting = false
- velocity = input_movement * speed
- move_and_slide()
- func _on_area_2d_body_entered(_body: Node2D):
- anim_state.travel("Swim")
- current_states = player_states.SWIM
- $Watertrail.emitting = true
- func _on_area_2d_body_exited(_body: Node2D):
- current_states = player_states.MOVE
- $Watertrail.emitting = false
Advertisement
Add Comment
Please, Sign In to add comment