diff --git a/base/scenes/enemies/test_enemy.tscn b/base/scenes/enemies/test_enemy.tscn index b13043f..c103c9a 100644 --- a/base/scenes/enemies/test_enemy.tscn +++ b/base/scenes/enemies/test_enemy.tscn @@ -15,7 +15,7 @@ [node name="RotationalSprite" type="Sprite3D" parent="."] billboard = 2 texture_filter = 0 -texture = ExtResource("9_83myg") +texture = ExtResource("8_snoby") script = ExtResource("2_hmq60") rotations = Dictionary[float, Texture2D]({ 0.0: ExtResource("6_d1vpv"), diff --git a/base/scenes/game.tscn b/base/scenes/game.tscn index 806701a..a49fcbc 100644 --- a/base/scenes/game.tscn +++ b/base/scenes/game.tscn @@ -1,11 +1,15 @@ -[gd_scene load_steps=3 format=3 uid="uid://d23028pr0jahr"] +[gd_scene load_steps=4 format=3 uid="uid://d23028pr0jahr"] [ext_resource type="PackedScene" uid="uid://bgnb01j1nphhi" path="res://base/scenes/rooms/test.tscn" id="1_sjeh3"] [ext_resource type="PackedScene" uid="uid://dwx5tcatj35gu" path="res://base/scenes/player.tscn" id="2_uxs03"] +[ext_resource type="PackedScene" uid="uid://twqkevpn0q1a" path="res://base/scenes/enemies/test_enemy.tscn" id="3_tk4w0"] [node name="Game" type="Node3D"] [node name="Test Room" parent="." instance=ExtResource("1_sjeh3")] [node name="Player" parent="." instance=ExtResource("2_uxs03")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.208048, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.208048, 1.61008) + +[node name="TestEnemy" parent="." instance=ExtResource("3_tk4w0")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.695979) diff --git a/base/scenes/player.tscn b/base/scenes/player.tscn index 49f30d3..7be3938 100644 --- a/base/scenes/player.tscn +++ b/base/scenes/player.tscn @@ -1,5 +1,6 @@ -[gd_scene load_steps=10 format=3 uid="uid://dwx5tcatj35gu"] +[gd_scene load_steps=11 format=3 uid="uid://dwx5tcatj35gu"] +[ext_resource type="Script" uid="uid://dts8lbivkgsmj" path="res://base/scripts/player/player.gd" id="1_1w3ab"] [ext_resource type="Texture2D" uid="uid://cf7avgppv4kfk" path="res://base/assets/guns/placeholder/static.png" id="1_7s1wv"] [ext_resource type="Texture2D" uid="uid://cfw6p5g680c55" path="res://base/assets/guns/placeholder/shoot1.png" id="2_7ptt8"] [ext_resource type="Texture2D" uid="uid://bwfkjfpk4dwx0" path="res://base/assets/guns/placeholder/shoot2.png" id="3_1w3ab"] @@ -63,13 +64,18 @@ _data = { &"static": SubResource("Animation_ma1q3") } -[node name="Player" type="RigidBody3D"] +[node name="Player" type="CharacterBody3D"] +collision_layer = 2 +collision_mask = 3 +platform_wall_layers = 1 +script = ExtResource("1_1w3ab") [node name="Collider" type="CollisionShape3D" parent="."] shape = SubResource("CapsuleShape3D_jjqxs") [node name="Camera" type="Camera3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) +current = true [node name="HUD" type="CanvasLayer" parent="."] diff --git a/base/scenes/rooms/test.tscn b/base/scenes/rooms/test.tscn index cbe7daf..0659c14 100644 --- a/base/scenes/rooms/test.tscn +++ b/base/scenes/rooms/test.tscn @@ -3,6 +3,8 @@ [node name="Test Room" type="Node3D"] [node name="CSGCombiner3D" type="CSGCombiner3D" parent="."] +use_collision = true +collision_mask = 2 [node name="CSGBox3D" type="CSGBox3D" parent="CSGCombiner3D"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.165546, -1.07088, 0.522302) diff --git a/base/scripts/player/player.gd b/base/scripts/player/player.gd index 96877d3..af1cfdb 100644 --- a/base/scripts/player/player.gd +++ b/base/scripts/player/player.gd @@ -1,12 +1,40 @@ -extends RigidBody3D +extends CharacterBody3D + +@export var speed = 100.0 +@export var fall_acceleration = 75.0 +@export var vertical_sensivity = 0.005 +@export var horizontal_sensivity = 0.005 var stack: CommandStack = CommandStack.new() +@onready var camera: Camera3D = $"Camera" +@onready var weapon_player: AnimationPlayer = $"HUD/Weapon/AnimationPlayer" + # Called when the node enters the scene tree for the first time. func _ready() -> void: - pass # Replace with function body. + weapon_player.current_animation = "static" + Input.mouse_mode = Input.MOUSE_MODE_CAPTURED # Called every frame. 'delta' is the elapsed time since the previous frame. -func _process(delta: float) -> void: - pass +func _physics_process(delta: float) -> void: + var direction = Vector3.ZERO + direction.z = Input.get_axis("move_forward", "move_backward") + direction.x = Input.get_axis("move_left", "move_right") + var target_velocity = (transform.basis * direction).normalized() * speed * delta + + if not is_on_floor(): + target_velocity.y -= fall_acceleration * delta + + velocity = target_velocity + move_and_slide() + +func _input(event): + if event is InputEventMouseMotion: + var new_rotation = clamp( + camera.rotation.x - event.relative.y * vertical_sensivity, + -PI/2, + PI/2 + ) + camera.rotation.x = new_rotation + rotation.y -= event.relative.x * horizontal_sensivity diff --git a/project.godot b/project.godot index b8c2731..c1a93af 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="Revenge of the Red Dragon Pon of the Red Dragon Pon of the Red Dragon Pon" -run/main_scene="uid://bxf4x8hp870i6" +run/main_scene="uid://d23028pr0jahr" config/features=PackedStringArray("4.4", "Forward Plus") config/icon="res://icon.svg" @@ -19,6 +19,34 @@ config/icon="res://icon.svg" project/assembly_name="Revenge of the Red Dragon Pon of the Red Dragon Pon of the Red Dragon Pon" +[input] + +move_forward={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) +] +} +move_backward={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) +] +} +move_left={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) +] +} +move_right={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) +] +} + +[layer_names] + +3d_physics/layer_1="Static Environment" +3d_physics/layer_2="Entities" + [rendering] textures/canvas_textures/default_texture_filter=0