feat: fix the block pushing; add new groups for walls and pushable objects;
This commit is contained in:
@@ -9,8 +9,9 @@ size = Vector2(16, 16)
|
|||||||
atlas = ExtResource("1_83tkd")
|
atlas = ExtResource("1_83tkd")
|
||||||
region = Rect2(127.859436, 47.936436, 16.21347, 16.062302)
|
region = Rect2(127.859436, 47.936436, 16.21347, 16.062302)
|
||||||
|
|
||||||
[node name="Block" type="RigidBody2D" unique_id=2096944035]
|
[node name="Block" type="RigidBody2D" unique_id=2096944035 groups=["pushable"]]
|
||||||
gravity_scale = 0.0
|
gravity_scale = 0.0
|
||||||
|
linear_damp = 10.0
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=195703280]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="." unique_id=195703280]
|
||||||
shape = SubResource("RectangleShape2D_bqpwv")
|
shape = SubResource("RectangleShape2D_bqpwv")
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -795,6 +795,7 @@ tile_map_data = PackedByteArray("AAAIAP7/AAAAAAIAAAAKAP3/AAAAAAIAAAAMAP7/AAAAAAI
|
|||||||
tile_set = SubResource("TileSet_ilnae")
|
tile_set = SubResource("TileSet_ilnae")
|
||||||
|
|
||||||
[node name="Player" parent="ObstacleLayer" unique_id=1991398375 instance=ExtResource("1_2p8i2")]
|
[node name="Player" parent="ObstacleLayer" unique_id=1991398375 instance=ExtResource("1_2p8i2")]
|
||||||
|
push_strength = 100
|
||||||
|
|
||||||
[node name="Camera2D" type="Camera2D" parent="ObstacleLayer/Player" unique_id=1335060572]
|
[node name="Camera2D" type="Camera2D" parent="ObstacleLayer/Player" unique_id=1335060572]
|
||||||
zoom = Vector2(5, 5)
|
zoom = Vector2(5, 5)
|
||||||
@@ -804,3 +805,4 @@ position = Vector2(136, -108)
|
|||||||
|
|
||||||
[node name="Block" parent="." unique_id=2096944035 instance=ExtResource("6_12ovb")]
|
[node name="Block" parent="." unique_id=2096944035 instance=ExtResource("6_12ovb")]
|
||||||
position = Vector2(0, -33)
|
position = Vector2(0, -33)
|
||||||
|
lock_rotation = true
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ class_name Player
|
|||||||
|
|
||||||
@export var move_speed: float = 100
|
@export var move_speed: float = 100
|
||||||
@export var hp: int = 10
|
@export var hp: int = 10
|
||||||
|
@export var push_strength: int = 50
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready() -> void:
|
func _ready() -> void:
|
||||||
@@ -33,10 +34,9 @@ func _process(delta: float) -> void:
|
|||||||
var collision: KinematicCollision2D = get_last_slide_collision()
|
var collision: KinematicCollision2D = get_last_slide_collision()
|
||||||
if collision:
|
if collision:
|
||||||
var collisision_node = collision.get_collider()
|
var collisision_node = collision.get_collider()
|
||||||
if collisision_node is RigidBody2D:
|
if collisision_node.is_in_group("pushable"):
|
||||||
var collision_normal: Vector2 = collision.get_normal()
|
var collision_normal: Vector2 = collision.get_normal()
|
||||||
collisision_node.apply_central_force(-collision_normal)
|
collisision_node.apply_central_force(-collision_normal * push_strength)
|
||||||
|
|
||||||
|
|
||||||
move_and_slide()
|
move_and_slide()
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,11 @@ SceneManager="*uid://6txu74mchftj"
|
|||||||
|
|
||||||
window/stretch/mode="canvas_items"
|
window/stretch/mode="canvas_items"
|
||||||
|
|
||||||
|
[global_group]
|
||||||
|
|
||||||
|
wall="A wall tilemap layer"
|
||||||
|
pushable="A pushuable object"
|
||||||
|
|
||||||
[physics]
|
[physics]
|
||||||
|
|
||||||
3d/physics_engine="Jolt Physics"
|
3d/physics_engine="Jolt Physics"
|
||||||
|
|||||||
Reference in New Issue
Block a user