Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
be3d81eb7a |
@@ -13,7 +13,7 @@ config_version=5
|
||||
config/name="SkyPrincess"
|
||||
config/description="a prototype game, for testing, frenzy mechanics, music, NPCs, and player controller"
|
||||
config/version="25.2"
|
||||
run/main_scene="uid://dg1b5q643boy5"
|
||||
run/main_scene="uid://c3r8fger66hy0"
|
||||
config/features=PackedStringArray("4.5", "Forward Plus")
|
||||
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_ju58f"]
|
||||
[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="2_oqbmf"]
|
||||
[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/levels/sky_princess.tscn" id="5_sqxie"]
|
||||
[ext_resource type="PackedScene" uid="uid://d01yomyxft4qt" path="res://scenes/ui/ui.tscn" id="1_geiq8"]
|
||||
[ext_resource type="Material" uid="uid://dkulsdbn03prr" path="res://materials/grass.tres" id="2_tkkka"]
|
||||
[ext_resource type="PackedScene" uid="uid://dsgxat46qwqbn" path="res://scenes/props/table.tscn" id="3_8lk3y"]
|
||||
[ext_resource type="PackedScene" uid="uid://b5ah32wouh61i" path="res://scenes/props/chest.tscn" id="4_h35hl"]
|
||||
[ext_resource type="PackedScene" uid="uid://cn81uqcg16q4b" path="res://scenes/props/sky_princess.tscn" id="5_kwk8y"]
|
||||
[ext_resource type="PackedScene" path="res://scenes/characters/player.tscn" id="6_player"]
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_oqbmf"]
|
||||
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="ui" parent="." instance=ExtResource("1_ju58f")]
|
||||
[node name="ui" parent="." instance=ExtResource("1_geiq8")]
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource("Environment_ju58f")
|
||||
@@ -47,21 +47,18 @@ shadow_enabled = true
|
||||
[node name="ground" type="CSGBox3D" parent="."]
|
||||
use_collision = true
|
||||
size = Vector3(48, 0.1, 48)
|
||||
material = ExtResource("2_bd7ek")
|
||||
material = ExtResource("2_tkkka")
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="ground"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10, 0.5499997, -13)
|
||||
size = Vector3(3, 1, 5)
|
||||
material = ExtResource("2_bd7ek")
|
||||
material = ExtResource("2_tkkka")
|
||||
|
||||
[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)
|
||||
operation = 2
|
||||
size = Vector3(3, 1, 2)
|
||||
material = ExtResource("2_bd7ek")
|
||||
|
||||
[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)
|
||||
material = ExtResource("2_tkkka")
|
||||
|
||||
[node name="redCharacter" type="MeshInstance3D" parent="."]
|
||||
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
|
||||
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)
|
||||
|
||||
[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)
|
||||
|
||||
[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)
|
||||
|
||||
[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