From: Clifton Palmer Date: Sun, 15 Dec 2024 11:18:10 +0000 (+0200) Subject: Added basic walls with no collision X-Git-Tag: 0.9.0~10 X-Git-Url: http://git.purplebirdman.com/lightcycles.git/commitdiff_plain/3e15374f814e7b21fc895b09ed77ef983f392a93?ds=sidebyside Added basic walls with no collision --- diff --git a/map/world.gd b/map/world.gd index d1979f7..3b0e36b 100644 --- a/map/world.gd +++ b/map/world.gd @@ -1,6 +1,28 @@ extends Node3D +@onready var _walls = $map + +var _player_wall_tscn = preload("res://player/player_wall.tscn") +var _wall_start: Vector3 = Vector3.ZERO func _input(event: InputEvent) -> void: if event.is_action_pressed("ui_cancel"): get_tree().quit() + + +func _on_player_player_ready(player: Player) -> void: + var origin: Vector3 = player.get_tree().get_first_node_in_group("wall_origin").global_position + _wall_start = origin + + +func _on_player_player_turn(player: Player) -> void: + var origin: Vector3 = player.global_position + + var wall: PlayerWall = _player_wall_tscn.instantiate() + add_child(wall) + wall.global_position = _wall_start + wall.global_scale(Vector3(1, 1, (origin - _wall_start).length())) + wall.global_rotation = player.global_rotation + print("Made a wall: " + str(wall)) + + _wall_start = origin diff --git a/map/world.tscn b/map/world.tscn index a3f6d32..ebee4d9 100644 --- a/map/world.tscn +++ b/map/world.tscn @@ -37,5 +37,7 @@ shape = SubResource("ConcavePolygonShape3D_mhr6o") [node name="player" parent="." instance=ExtResource("1_3tqxd")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -16) -speed = 5.0 -distance = 3.0 +distance = 5.0 + +[connection signal="playerReady" from="player" to="." method="_on_player_player_ready"] +[connection signal="playerTurn" from="player" to="." method="_on_player_player_turn"] diff --git a/player/player.gd b/player/player.gd index 27754a4..1c842d4 100644 --- a/player/player.gd +++ b/player/player.gd @@ -1,5 +1,11 @@ +class_name Player extends CharacterBody3D + +signal playerReady +signal playerTurn + + @export_category("Movement") @export var speed = 5.0 @@ -7,16 +13,22 @@ extends CharacterBody3D @export var distance = 3.0 @onready var _springArm = $SpringArm3D -@onready var _skin = %skin +func _ready() -> void: + _springArm.spring_length = distance + playerReady.emit(self) + func _input(event: InputEvent) -> void: if event.is_action_pressed("player_left"): + playerTurn.emit(self) global_rotate(Vector3.UP, PI/2) elif event.is_action_pressed("player_right"): + playerTurn.emit(self) global_rotate(Vector3.UP, -PI/2) -func _physics_process(delta: float) -> void: + +func _physics_process(_delta: float) -> void: velocity = global_transform.basis.z * speed move_and_slide() diff --git a/player/player.tscn b/player/player.tscn index e52446e..3404340 100644 --- a/player/player.tscn +++ b/player/player.tscn @@ -7,6 +7,7 @@ size = Vector3(0.25116, 0.472717, 0.987427) [node name="Player" type="CharacterBody3D"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.367284) script = ExtResource("1_kh0vu") [node name="skin" parent="." instance=ExtResource("1_m3abw")] @@ -21,3 +22,6 @@ transform = Transform3D(-1, 0, -8.74228e-08, -2.26267e-08, 0.965926, 0.258819, 8 spring_length = 5.0 [node name="Camera3D" type="Camera3D" parent="SpringArm3D"] + +[node name="WallOrigin" type="Node3D" parent="." groups=["wall_origin"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.343644) diff --git a/player/player_wall.gd b/player/player_wall.gd new file mode 100644 index 0000000..e8dd447 --- /dev/null +++ b/player/player_wall.gd @@ -0,0 +1,2 @@ +class_name PlayerWall +extends Node3D diff --git a/player/player_wall.tscn b/player/player_wall.tscn new file mode 100644 index 0000000..ee9a0c7 --- /dev/null +++ b/player/player_wall.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=4 format=3 uid="uid://6a20phajjwu8"] + +[ext_resource type="Script" path="res://player/player_wall.gd" id="1_rj8im"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_sk1tc"] +albedo_color = Color(0.1152, 0.8192, 0.96, 1) +emission_enabled = true +emission = Color(0.354498, 0.45596, 0.814702, 1) +emission_energy_multiplier = 1.44 + +[sub_resource type="BoxMesh" id="BoxMesh_p4d0s"] +material = SubResource("StandardMaterial3D_sk1tc") +size = Vector3(1, 0.01, 1) + +[node name="PlayerWall" type="Node3D"] +script = ExtResource("1_rj8im") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 0, 0, 0.5) +mesh = SubResource("BoxMesh_p4d0s") diff --git a/project.godot b/project.godot index c16c1f2..22564c7 100644 --- a/project.godot +++ b/project.godot @@ -20,6 +20,10 @@ config/icon="res://icon.svg" window/size/viewport_width=2304 window/size/viewport_height=1296 +[global_group] + +wall_origin="" + [input] player_left={