From 595bdeb3933c4797a7a3ad8b510f6f6de1a8901f Mon Sep 17 00:00:00 2001 From: Ryan Reed Date: Tue, 4 Mar 2025 12:34:36 -0500 Subject: [PATCH] Adding player and a an initial ground --- scenes/characters/player.gd | 33 +++++++++++++++++++++++++++++++++ scenes/characters/player.gd.uid | 1 + scenes/characters/player.tscn | 20 ++++++++++++++++++++ scenes/world/world.gd | 15 ++++++++++++--- scenes/world/world.tscn | 5 ++++- 5 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 scenes/characters/player.gd create mode 100644 scenes/characters/player.gd.uid create mode 100644 scenes/characters/player.tscn diff --git a/scenes/characters/player.gd b/scenes/characters/player.gd new file mode 100644 index 0000000..e19591c --- /dev/null +++ b/scenes/characters/player.gd @@ -0,0 +1,33 @@ +class_name Player +extends CharacterBody3D + + +@export var speed: float = 5.0 +@export var jump_velocity: float = 4.5 + + +func _physics_process(delta: float) -> void: + apply_gravity(delta) + handle_jump() + handle_movement() + + move_and_slide() + + +func apply_gravity(delta: float) -> void: + if is_on_floor(): return + velocity += get_gravity() * delta + +func handle_jump() -> void: + if not Input.is_action_just_pressed("jump") or not is_on_floor(): return + velocity.y = jump_velocity + +func handle_movement() -> void: + var input_dir: Vector2 = Input.get_vector("move_left", "move_right", "move_forward", "move_backward") + var direction: Vector3 = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized() + if direction: + 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) diff --git a/scenes/characters/player.gd.uid b/scenes/characters/player.gd.uid new file mode 100644 index 0000000..9a029d7 --- /dev/null +++ b/scenes/characters/player.gd.uid @@ -0,0 +1 @@ +uid://b6xiwiwwbdapd diff --git a/scenes/characters/player.tscn b/scenes/characters/player.tscn new file mode 100644 index 0000000..fd98eba --- /dev/null +++ b/scenes/characters/player.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=4 format=3 uid="uid://cggiju8k3bkoc"] + +[ext_resource type="Script" uid="uid://b6xiwiwwbdapd" path="res://scenes/characters/player.gd" id="1_rp718"] + +[sub_resource type="BoxShape3D" id="BoxShape3D_wocps"] +size = Vector3(1, 1.9, 1) + +[sub_resource type="BoxMesh" id="BoxMesh_rp718"] +size = Vector3(1, 1.9, 1) + +[node name="Player" type="CharacterBody3D"] +script = ExtResource("1_rp718") + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.953133, 0) +shape = SubResource("BoxShape3D_wocps") + +[node name="MeshInstance3D" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.953133, 0) +mesh = SubResource("BoxMesh_rp718") diff --git a/scenes/world/world.gd b/scenes/world/world.gd index 1dc3368..311dbc5 100644 --- a/scenes/world/world.gd +++ b/scenes/world/world.gd @@ -2,13 +2,13 @@ class_name World extends Node3D - const BLOCK_PREFAB: PackedScene = preload("res://scenes/blocks/block.tscn") func _ready() -> void: - create_block(Block.Types.DIRT, Vector3.ZERO) - create_block(Block.Types.STONE, Vector3.ONE) + _initialize_ground() + #create_block(Block.Types.DIRT, Vector3.ZERO) + #create_block(Block.Types.STONE, Vector3.ONE) func create_block(block_type: Block.Types, block_position: Vector3) -> void: @@ -18,3 +18,12 @@ func create_block(block_type: Block.Types, block_position: Vector3) -> void: block.type = block_type block.apply_material() add_child(block) + + +func _initialize_ground() -> void: + for x: int in range(-10, 11): + for z: int in range(-10, 11): + var random_type: int = randi_range(0 ,1) + var ground_position: Vector3 = Vector3(x, 0, z) + create_block(random_type, ground_position) + #create_block(Block.Types.STONE, ground_position) diff --git a/scenes/world/world.tscn b/scenes/world/world.tscn index f977f6b..3a9aed4 100644 --- a/scenes/world/world.tscn +++ b/scenes/world/world.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=5 format=3 uid="uid://mkfitwqnerku"] +[gd_scene load_steps=6 format=3 uid="uid://mkfitwqnerku"] [ext_resource type="Script" uid="uid://c0jbvki2cylct" path="res://scenes/world/world.gd" id="1_6m72w"] +[ext_resource type="PackedScene" uid="uid://cggiju8k3bkoc" path="res://scenes/characters/player.tscn" id="2_sl2e5"] [sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_4rhad"] sky_horizon_color = Color(0.662243, 0.671743, 0.686743, 1) @@ -27,3 +28,5 @@ shadow_enabled = true [node name="Camera3D" type="Camera3D" parent="."] transform = Transform3D(1, 0, 0, 0, 0.866025, 0.5, 0, -0.5, 0.866025, 0.1, 1.86802, 3.38687) + +[node name="Player" parent="." instance=ExtResource("2_sl2e5")]