"splat-launch" move :3
This commit is contained in:
parent
20f35ab240
commit
7779e241f6
6 changed files with 97 additions and 11 deletions
|
@ -11,6 +11,8 @@ extends CharacterBody2D
|
|||
@export_group("Air Movement")
|
||||
@export var gravity: float
|
||||
@export var jump_power: float
|
||||
@export var splat_launch_power: float
|
||||
@export var splat_offset: float
|
||||
|
||||
@export_group("Internal References")
|
||||
@export var state_chart: StateChart
|
||||
|
@ -26,8 +28,12 @@ var input_dir: Vector2 = Vector2.ZERO:
|
|||
input_dir = value.sign()
|
||||
state_chart.set_expression_property(&"input_dir", input_dir)
|
||||
|
||||
var _last_velocity: Vector2 = Vector2.ZERO
|
||||
var _splat_normal: Vector2 = Vector2.ZERO
|
||||
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
_last_velocity = velocity
|
||||
move_and_slide()
|
||||
state_chart.set_expression_property(&"velocity", velocity)
|
||||
if velocity.x != 0.0:
|
||||
|
@ -88,11 +94,35 @@ func _start_jump() -> void:
|
|||
|
||||
|
||||
#region Missile
|
||||
func _restore_graphics_rotation() -> void:
|
||||
graphics.rotation = 0.0
|
||||
|
||||
|
||||
func _face_towards_velocity(_delta: float) -> void:
|
||||
graphics.rotation = Vector2(graphics.scale.x, 0.0).angle_to(velocity)
|
||||
|
||||
func _restore_graphics_rotation() -> void:
|
||||
graphics.rotation = 0.0
|
||||
func _check_for_splat(delta: float) -> void:
|
||||
var col = move_and_collide(_last_velocity * delta, true)
|
||||
if col:
|
||||
velocity = Vector2.ZERO
|
||||
global_position += col.get_travel()
|
||||
_splat_normal = col.get_normal()
|
||||
var angle = col.get_normal().angle()
|
||||
if graphics.scale.x > 0.0:
|
||||
angle += PI
|
||||
graphics.set_deferred(&"rotation", angle)
|
||||
state_chart.send_event(&"splatted")
|
||||
#endregion
|
||||
|
||||
|
||||
#region Splatting
|
||||
func _do_splat_launch() -> void:
|
||||
var dir = input_dir.project(_splat_normal.orthogonal()).normalized()
|
||||
if dir == Vector2.ZERO:
|
||||
dir = _splat_normal
|
||||
dir = dir.rotated(dir.angle_to(_splat_normal) * 0.5)
|
||||
|
||||
launch(dir * splat_launch_power)
|
||||
#endregion
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue