cleaned up the code more.
This commit is contained in:
@@ -13,7 +13,7 @@ config_version=5
|
|||||||
config/name="SkyPrincess"
|
config/name="SkyPrincess"
|
||||||
config/description="a prototype game, for testing, frenzy mechanics, music, NPCs, and player controller"
|
config/description="a prototype game, for testing, frenzy mechanics, music, NPCs, and player controller"
|
||||||
config/version="25.2"
|
config/version="25.2"
|
||||||
run/main_scene="uid://dg1b5q643boy5"
|
run/main_scene="uid://c3r8fger66hy0"
|
||||||
config/features=PackedStringArray("4.5", "Forward Plus")
|
config/features=PackedStringArray("4.5", "Forward Plus")
|
||||||
run/max_fps=60
|
run/max_fps=60
|
||||||
|
|
||||||
|
|||||||
25
scenes/characters/player.tscn
Normal file
25
scenes/characters/player.tscn
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
[gd_scene load_steps=4 format=3 uid="uid://player_scene"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://scripts/player.gd" id="1_player"]
|
||||||
|
|
||||||
|
[sub_resource type="CapsuleMesh" id="CapsuleMesh_player"]
|
||||||
|
height = 2.0
|
||||||
|
radial_segments = 8
|
||||||
|
rings = 4
|
||||||
|
|
||||||
|
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_player"]
|
||||||
|
height = 2.0
|
||||||
|
radius = 0.5
|
||||||
|
|
||||||
|
[node name="Player" type="CharacterBody3D"]
|
||||||
|
script = ExtResource("1_player")
|
||||||
|
|
||||||
|
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||||
|
mesh = SubResource("CapsuleMesh_player")
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||||
|
shape = SubResource("CapsuleShape3D_player")
|
||||||
|
|
||||||
|
[node name="Camera3D" type="Camera3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 0.866025, 0.5, 0, -0.5, 0.866025, 0, 2, 5)
|
||||||
|
current = true
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
[gd_scene load_steps=5 format=3 uid="uid://dpco4vo8rwkq0"]
|
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://cyqtabd2e7m8d" path="res://scripts/player_controller.gd" id="1"]
|
|
||||||
|
|
||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_tfo3t"]
|
|
||||||
albedo_color = Color(0.11764706, 0.4, 0.9607843, 1)
|
|
||||||
|
|
||||||
[sub_resource type="CapsuleMesh" id="CapsuleMesh_tfo3t"]
|
|
||||||
material = SubResource("StandardMaterial3D_tfo3t")
|
|
||||||
|
|
||||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_tfo3t"]
|
|
||||||
|
|
||||||
[node name="playerCharacter" type="Node3D"]
|
|
||||||
|
|
||||||
[node name="CharacterBody3D" type="CharacterBody3D" parent="."]
|
|
||||||
script = ExtResource("1")
|
|
||||||
|
|
||||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="CharacterBody3D"]
|
|
||||||
mesh = SubResource("CapsuleMesh_tfo3t")
|
|
||||||
skeleton = NodePath("../..")
|
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="CharacterBody3D"]
|
|
||||||
shape = SubResource("CapsuleShape3D_tfo3t")
|
|
||||||
|
|
||||||
[node name="Camera3D" type="Camera3D" parent="CharacterBody3D"]
|
|
||||||
transform = Transform3D(1, 0, 0, 0, 0.9659258, 0.25881904, 0, -0.25881904, 0.9659258, 0, 1.3567054, 2)
|
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
[gd_scene load_steps=13 format=3 uid="uid://dg1b5q643boy5"]
|
[gd_scene load_steps=13 format=3 uid="uid://c3r8fger66hy0"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://dpco4vo8rwkq0" path="res://scenes/characters/player_character.tscn" id="1_aiegb"]
|
[ext_resource type="PackedScene" uid="uid://d01yomyxft4qt" path="res://scenes/ui/ui.tscn" id="1_geiq8"]
|
||||||
[ext_resource type="PackedScene" uid="uid://d01yomyxft4qt" path="res://scenes/ui/ui.tscn" id="1_ju58f"]
|
[ext_resource type="Material" uid="uid://dkulsdbn03prr" path="res://materials/grass.tres" id="2_tkkka"]
|
||||||
[ext_resource type="Material" uid="uid://dkulsdbn03prr" path="res://materials/grass.tres" id="2_bd7ek"]
|
[ext_resource type="PackedScene" uid="uid://dsgxat46qwqbn" path="res://scenes/props/table.tscn" id="3_8lk3y"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dsgxat46qwqbn" path="res://scenes/props/table.tscn" id="2_oqbmf"]
|
[ext_resource type="PackedScene" uid="uid://b5ah32wouh61i" path="res://scenes/props/chest.tscn" id="4_h35hl"]
|
||||||
[ext_resource type="PackedScene" uid="uid://b5ah32wouh61i" path="res://scenes/props/chest.tscn" id="3_arrdh"]
|
[ext_resource type="PackedScene" uid="uid://cn81uqcg16q4b" path="res://scenes/props/sky_princess.tscn" id="5_kwk8y"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cn81uqcg16q4b" path="res://scenes/levels/sky_princess.tscn" id="5_sqxie"]
|
[ext_resource type="PackedScene" path="res://scenes/characters/player.tscn" id="6_player"]
|
||||||
|
|
||||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_oqbmf"]
|
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_oqbmf"]
|
||||||
sky_horizon_color = Color(0.66224277, 0.6717428, 0.6867428, 1)
|
sky_horizon_color = Color(0.66224277, 0.6717428, 0.6867428, 1)
|
||||||
@@ -35,7 +35,7 @@ points = PackedVector3Array(-0.5, -0.5, 0, -0.49765074, -0.5, -0.049040705, -0.4
|
|||||||
|
|
||||||
[node name="testRoom" type="Node3D"]
|
[node name="testRoom" type="Node3D"]
|
||||||
|
|
||||||
[node name="ui" parent="." instance=ExtResource("1_ju58f")]
|
[node name="ui" parent="." instance=ExtResource("1_geiq8")]
|
||||||
|
|
||||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||||
environment = SubResource("Environment_ju58f")
|
environment = SubResource("Environment_ju58f")
|
||||||
@@ -47,21 +47,18 @@ shadow_enabled = true
|
|||||||
[node name="ground" type="CSGBox3D" parent="."]
|
[node name="ground" type="CSGBox3D" parent="."]
|
||||||
use_collision = true
|
use_collision = true
|
||||||
size = Vector3(48, 0.1, 48)
|
size = Vector3(48, 0.1, 48)
|
||||||
material = ExtResource("2_bd7ek")
|
material = ExtResource("2_tkkka")
|
||||||
|
|
||||||
[node name="CSGBox3D" type="CSGBox3D" parent="ground"]
|
[node name="CSGBox3D" type="CSGBox3D" parent="ground"]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0.5499997, -13)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0.5499997, -13)
|
||||||
size = Vector3(3, 1, 5)
|
size = Vector3(3, 1, 5)
|
||||||
material = ExtResource("2_bd7ek")
|
material = ExtResource("2_tkkka")
|
||||||
|
|
||||||
[node name="CSGBox3D2" type="CSGBox3D" parent="ground"]
|
[node name="CSGBox3D2" type="CSGBox3D" parent="ground"]
|
||||||
transform = Transform3D(1, 0, 0, 0, -0.8660254, 0.49999988, 0, -0.49999988, -0.8660254, -10, 0.98301244, -11.122906)
|
transform = Transform3D(1, 0, 0, 0, -0.8660254, 0.49999988, 0, -0.49999988, -0.8660254, -10, 0.98301244, -11.122906)
|
||||||
operation = 2
|
operation = 2
|
||||||
size = Vector3(3, 1, 2)
|
size = Vector3(3, 1, 2)
|
||||||
material = ExtResource("2_bd7ek")
|
material = ExtResource("2_tkkka")
|
||||||
|
|
||||||
[node name="playerCharacter" parent="." instance=ExtResource("1_aiegb")]
|
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.3605117, 1.05, 1.5436046)
|
|
||||||
|
|
||||||
[node name="redCharacter" type="MeshInstance3D" parent="."]
|
[node name="redCharacter" type="MeshInstance3D" parent="."]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.29388237, 1.05, -2.020051)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.29388237, 1.05, -2.020051)
|
||||||
@@ -78,11 +75,14 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.227469, 0)
|
|||||||
billboard = 1
|
billboard = 1
|
||||||
text = "Red NPC"
|
text = "Red NPC"
|
||||||
|
|
||||||
[node name="table" parent="." instance=ExtResource("2_oqbmf")]
|
[node name="table" parent="." instance=ExtResource("3_8lk3y")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.38244724, 0.5513308, -0.3205235)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.38244724, 0.5513308, -0.3205235)
|
||||||
|
|
||||||
[node name="chest" parent="." instance=ExtResource("3_arrdh")]
|
[node name="chest" parent="." instance=ExtResource("4_h35hl")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0.54999995, -11)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5, 0.54999995, -11)
|
||||||
|
|
||||||
[node name="skyPrincess" parent="." instance=ExtResource("5_sqxie")]
|
[node name="skyPrincess" parent="." instance=ExtResource("5_kwk8y")]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 115, -220)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 115, -220)
|
||||||
|
|
||||||
|
[node name="Player" parent="." instance=ExtResource("6_player")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 4)
|
||||||
30
scripts/player.gd
Normal file
30
scripts/player.gd
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
extends CharacterBody3D
|
||||||
|
|
||||||
|
@export var speed = 5.0
|
||||||
|
@export var jump_velocity = 4.5
|
||||||
|
|
||||||
|
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
|
||||||
|
|
||||||
|
func _physics_process(delta):
|
||||||
|
# Add gravity
|
||||||
|
if not is_on_floor():
|
||||||
|
velocity.y -= gravity * delta
|
||||||
|
|
||||||
|
# Handle jump
|
||||||
|
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
|
||||||
|
velocity.y = jump_velocity
|
||||||
|
|
||||||
|
# Get input direction
|
||||||
|
var input_dir = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down")
|
||||||
|
var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
|
||||||
|
|
||||||
|
if direction:
|
||||||
|
# Rotate to face movement direction
|
||||||
|
look_at(position + direction, Vector3.UP)
|
||||||
|
velocity.x = direction.x * speed
|
||||||
|
velocity.z = direction.z * speed
|
||||||
|
else:
|
||||||
|
velocity.x = move_toward(velocity.x, 0, speed)
|
||||||
|
velocity.z = move_toward(velocity.z, 0, speed)
|
||||||
|
|
||||||
|
move_and_slide()
|
||||||
1
scripts/player.gd.uid
Normal file
1
scripts/player.gd.uid
Normal file
@@ -0,0 +1 @@
|
|||||||
|
uid://c2oh06p4hqbjv
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
extends CharacterBody3D
|
|
||||||
|
|
||||||
@export var speed = 5.0
|
|
||||||
@export var sprint_speed = 10.0
|
|
||||||
@export var crouch_speed = 2.0
|
|
||||||
@export var jump_velocity = 4.5
|
|
||||||
@export var mouse_sensitivity = 0.002
|
|
||||||
@export var turn_speed = 10.0
|
|
||||||
|
|
||||||
@onready var camera = $Camera3D
|
|
||||||
|
|
||||||
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
|
|
||||||
|
|
||||||
func _ready():
|
|
||||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
|
||||||
|
|
||||||
func _input(event):
|
|
||||||
if event is InputEventMouseMotion:
|
|
||||||
rotate_y(-event.relative.x * mouse_sensitivity)
|
|
||||||
camera.rotate_x(-event.relative.y * mouse_sensitivity)
|
|
||||||
camera.rotation.x = clamp(camera.rotation.x, -PI/2, PI/2)
|
|
||||||
|
|
||||||
func _physics_process(delta):
|
|
||||||
if not is_on_floor():
|
|
||||||
velocity.y -= gravity * delta
|
|
||||||
|
|
||||||
if Input.is_action_just_pressed("jump") and is_on_floor():
|
|
||||||
velocity.y = jump_velocity
|
|
||||||
|
|
||||||
var input_dir = Input.get_vector("slideLeft", "slideRight", "backward", "forward")
|
|
||||||
input_dir = -input_dir
|
|
||||||
var direction = (camera.transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
|
|
||||||
|
|
||||||
if direction:
|
|
||||||
var current_speed = speed
|
|
||||||
if Input.is_action_pressed("sprint"):
|
|
||||||
current_speed = sprint_speed
|
|
||||||
elif Input.is_action_pressed("crouch"):
|
|
||||||
current_speed = crouch_speed
|
|
||||||
velocity.x = direction.x * current_speed
|
|
||||||
velocity.z = direction.z * current_speed
|
|
||||||
|
|
||||||
# Smoothly rotate player to face movement direction only if moving forward/backward
|
|
||||||
if input_dir.y != 0:
|
|
||||||
var target_angle = atan2(direction.x, direction.z)
|
|
||||||
rotation.y = lerp_angle(rotation.y, target_angle, delta * turn_speed)
|
|
||||||
else:
|
|
||||||
velocity.x = move_toward(velocity.x, 0, speed)
|
|
||||||
velocity.z = move_toward(velocity.z, 0, speed)
|
|
||||||
|
|
||||||
move_and_slide()
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
uid://cyqtabd2e7m8d
|
|
||||||
Reference in New Issue
Block a user