Shrink collider when rolling
This commit is contained in:
parent
7e035e70c0
commit
252a6437d6
@ -1,10 +1,13 @@
|
|||||||
extends CharacterBody2D
|
extends CharacterBody2D
|
||||||
|
|
||||||
var gravity = 800
|
var gravity = 900
|
||||||
|
var gravity_mid = 500
|
||||||
|
var gravity_fall = 1300
|
||||||
const SPEED = 200.0
|
const SPEED = 200.0
|
||||||
const JUMP_VELOCITY = -400.0
|
const JUMP_VELOCITY = -400.0
|
||||||
const roll_speed = 300
|
const roll_speed = 300
|
||||||
var roll_cooldown_time = 0.5
|
var roll_cooldown_time = 0.5
|
||||||
|
var colshape_stand = 30
|
||||||
|
|
||||||
@onready var sprite = $Sprites
|
@onready var sprite = $Sprites
|
||||||
|
|
||||||
@ -25,35 +28,14 @@ enum State {
|
|||||||
Roll,
|
Roll,
|
||||||
}
|
}
|
||||||
|
|
||||||
enum JumpState {
|
|
||||||
}
|
|
||||||
|
|
||||||
func _play_anim(state: State, velocity: Vector2):
|
|
||||||
match state:
|
|
||||||
State.Idle:
|
|
||||||
sprite.play("Idle")
|
|
||||||
State.Run:
|
|
||||||
sprite.play("Run")
|
|
||||||
State.Walk:
|
|
||||||
sprite.play("Walk")
|
|
||||||
State.Jump:
|
|
||||||
sprite.pause()
|
|
||||||
sprite.set_frame_and_progress(0, 0)
|
|
||||||
if velocity.y > 50:
|
|
||||||
sprite.set_frame_and_progress(2,0)
|
|
||||||
elif velocity.y > -150:
|
|
||||||
sprite.set_frame_and_progress(1, 0)
|
|
||||||
State.AirSpin:
|
|
||||||
pass
|
|
||||||
State.Land:
|
|
||||||
sprite.play("Land")
|
|
||||||
|
|
||||||
func _process_velocity(state: State, delta):
|
|
||||||
pass
|
|
||||||
|
|
||||||
func _physics_process(delta):
|
func _physics_process(delta):
|
||||||
if not is_on_floor():
|
if not is_on_floor():
|
||||||
|
if velocity.y > 50:
|
||||||
|
velocity.y += gravity_fall * delta
|
||||||
|
elif velocity.y < -50:
|
||||||
velocity.y += gravity * delta
|
velocity.y += gravity * delta
|
||||||
|
else:
|
||||||
|
velocity.y += gravity_mid * delta
|
||||||
elif state == State.Jump or state == State.AirSpin:
|
elif state == State.Jump or state == State.AirSpin:
|
||||||
state = State.Land
|
state = State.Land
|
||||||
sprite.play("Land")
|
sprite.play("Land")
|
||||||
@ -65,6 +47,8 @@ func _physics_process(delta):
|
|||||||
state = State.Roll
|
state = State.Roll
|
||||||
roll_time = 0.55
|
roll_time = 0.55
|
||||||
roll_dir = -1 if sprite.flip_h else 1
|
roll_dir = -1 if sprite.flip_h else 1
|
||||||
|
$CollisionShape2D.shape.size.y = colshape_stand / 2
|
||||||
|
$CollisionShape2D.position.y = colshape_stand / -4
|
||||||
sprite.play("GroundRoll")
|
sprite.play("GroundRoll")
|
||||||
if Input.is_action_just_pressed("ui_accept") and state != State.Roll:
|
if Input.is_action_just_pressed("ui_accept") and state != State.Roll:
|
||||||
if is_on_floor():
|
if is_on_floor():
|
||||||
@ -102,6 +86,8 @@ func _physics_process(delta):
|
|||||||
if roll_time >= 0:
|
if roll_time >= 0:
|
||||||
roll_time -= delta
|
roll_time -= delta
|
||||||
elif state == State.Roll:
|
elif state == State.Roll:
|
||||||
|
$CollisionShape2D.shape.size.y = colshape_stand
|
||||||
|
$CollisionShape2D.position.y = colshape_stand / -2
|
||||||
roll_cooldown = roll_cooldown_time
|
roll_cooldown = roll_cooldown_time
|
||||||
state = State.Idle
|
state = State.Idle
|
||||||
|
|
||||||
@ -122,3 +108,30 @@ func _physics_process(delta):
|
|||||||
sprite.play("Idle")
|
sprite.play("Idle")
|
||||||
|
|
||||||
move_and_slide()
|
move_and_slide()
|
||||||
|
|
||||||
|
# Maybe later
|
||||||
|
enum JumpState {
|
||||||
|
}
|
||||||
|
|
||||||
|
func _play_anim(state: State, velocity: Vector2):
|
||||||
|
match state:
|
||||||
|
State.Idle:
|
||||||
|
sprite.play("Idle")
|
||||||
|
State.Run:
|
||||||
|
sprite.play("Run")
|
||||||
|
State.Walk:
|
||||||
|
sprite.play("Walk")
|
||||||
|
State.Jump:
|
||||||
|
sprite.pause()
|
||||||
|
sprite.set_frame_and_progress(0, 0)
|
||||||
|
if velocity.y > 50:
|
||||||
|
sprite.set_frame_and_progress(2,0)
|
||||||
|
elif velocity.y > -150:
|
||||||
|
sprite.set_frame_and_progress(1, 0)
|
||||||
|
State.AirSpin:
|
||||||
|
pass
|
||||||
|
State.Land:
|
||||||
|
sprite.play("Land")
|
||||||
|
|
||||||
|
func _process_velocity(state: State, delta):
|
||||||
|
pass
|
||||||
|
@ -10,7 +10,8 @@ size = Vector2(500, 20)
|
|||||||
[node name="Node2D" type="Node2D"]
|
[node name="Node2D" type="Node2D"]
|
||||||
|
|
||||||
[node name="Player" parent="." instance=ExtResource("1_ibeo8")]
|
[node name="Player" parent="." instance=ExtResource("1_ibeo8")]
|
||||||
position = Vector2(163, 99)
|
position = Vector2(251, 168)
|
||||||
|
metadata/_edit_group_ = true
|
||||||
|
|
||||||
[node name="StaticBody2D" type="StaticBody2D" parent="."]
|
[node name="StaticBody2D" type="StaticBody2D" parent="."]
|
||||||
position = Vector2(265, 254)
|
position = Vector2(265, 254)
|
||||||
@ -22,3 +23,29 @@ mesh = SubResource("QuadMesh_n5vip")
|
|||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"]
|
||||||
shape = SubResource("RectangleShape2D_s46ls")
|
shape = SubResource("RectangleShape2D_s46ls")
|
||||||
|
|
||||||
|
[node name="StaticBody2D2" type="StaticBody2D" parent="."]
|
||||||
|
position = Vector2(331, 217)
|
||||||
|
scale = Vector2(0.120002, 1)
|
||||||
|
metadata/_edit_group_ = true
|
||||||
|
|
||||||
|
[node name="MeshInstance2D" type="MeshInstance2D" parent="StaticBody2D2"]
|
||||||
|
modulate = Color(0.168627, 0.678431, 0.701961, 1)
|
||||||
|
scale = Vector2(500, 20)
|
||||||
|
mesh = SubResource("QuadMesh_n5vip")
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D2"]
|
||||||
|
shape = SubResource("RectangleShape2D_s46ls")
|
||||||
|
|
||||||
|
[node name="StaticBody2D3" type="StaticBody2D" parent="."]
|
||||||
|
position = Vector2(204, 234)
|
||||||
|
scale = Vector2(0.120002, 1)
|
||||||
|
metadata/_edit_group_ = true
|
||||||
|
|
||||||
|
[node name="MeshInstance2D" type="MeshInstance2D" parent="StaticBody2D3"]
|
||||||
|
modulate = Color(0.168627, 0.678431, 0.701961, 1)
|
||||||
|
scale = Vector2(500, 20)
|
||||||
|
mesh = SubResource("QuadMesh_n5vip")
|
||||||
|
|
||||||
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D3"]
|
||||||
|
shape = SubResource("RectangleShape2D_s46ls")
|
||||||
|
@ -212,7 +212,7 @@ animations = [{
|
|||||||
}],
|
}],
|
||||||
"loop": false,
|
"loop": false,
|
||||||
"name": &"AirSpin",
|
"name": &"AirSpin",
|
||||||
"speed": 10.0
|
"speed": 8.0
|
||||||
}, {
|
}, {
|
||||||
"frames": [{
|
"frames": [{
|
||||||
"duration": 1.0,
|
"duration": 1.0,
|
||||||
@ -330,7 +330,7 @@ animations = [{
|
|||||||
}],
|
}],
|
||||||
"loop": true,
|
"loop": true,
|
||||||
"name": &"Run",
|
"name": &"Run",
|
||||||
"speed": 15.0
|
"speed": 12.0
|
||||||
}, {
|
}, {
|
||||||
"frames": [{
|
"frames": [{
|
||||||
"duration": 1.0,
|
"duration": 1.0,
|
||||||
@ -363,7 +363,7 @@ animations = [{
|
|||||||
}]
|
}]
|
||||||
|
|
||||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_wc2sw"]
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_wc2sw"]
|
||||||
size = Vector2(16, 29)
|
size = Vector2(16, 30)
|
||||||
|
|
||||||
[node name="Player" type="CharacterBody2D"]
|
[node name="Player" type="CharacterBody2D"]
|
||||||
script = ExtResource("1_23c20")
|
script = ExtResource("1_23c20")
|
||||||
@ -372,10 +372,9 @@ script = ExtResource("1_23c20")
|
|||||||
texture_filter = 1
|
texture_filter = 1
|
||||||
position = Vector2(0, -16)
|
position = Vector2(0, -16)
|
||||||
sprite_frames = SubResource("SpriteFrames_gvqqb")
|
sprite_frames = SubResource("SpriteFrames_gvqqb")
|
||||||
animation = &"GroundRoll"
|
animation = &"AirSpin"
|
||||||
frame = 6
|
metadata/_edit_lock_ = true
|
||||||
frame_progress = 1.0
|
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||||
position = Vector2(0, -14.5)
|
position = Vector2(0, -15)
|
||||||
shape = SubResource("RectangleShape2D_wc2sw")
|
shape = SubResource("RectangleShape2D_wc2sw")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user