Added terrain and robot prototypes

This commit is contained in:
douwe
2025-08-29 17:04:57 +02:00
parent 7c24dd92b0
commit 4e77198656
21 changed files with 342 additions and 73 deletions

View File

@@ -0,0 +1,70 @@
extends Camera3D
@export var base_move_speed := 5.0
@export var min_move_speed := 1.0
@export var max_move_speed := 20.0
@export var rotation_speed := 0.002
var input_delay_over := false
var current_move_speed := base_move_speed
var mouse_delta := Vector2.ZERO
var mouse_pos := Vector2.ZERO
func _process(delta):
if Input.is_action_just_pressed("camera_control"):
mouse_pos = get_viewport().get_mouse_position()
input_delay_over = false
get_tree().create_timer(0.15).timeout.connect(
func():
if Input.is_action_pressed("camera_control"):
input_delay_over = true
)
if Input.is_action_pressed("camera_control") and input_delay_over:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
handle_movement(delta)
handle_rotation()
else:
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
if Input.is_action_just_released("camera_control") and input_delay_over:
Input.warp_mouse(mouse_pos)
func _unhandled_input(event):
if event is InputEventMouseButton and event.is_pressed():
handle_scroll_wheel(event)
if event is InputEventMouseMotion:
mouse_delta = event.relative
func handle_movement(delta: float) -> void:
var input_dir = Vector3.ZERO
if Input.is_key_pressed(KEY_W):
input_dir.z -= 1
if Input.is_key_pressed(KEY_S):
input_dir.z += 1
if Input.is_key_pressed(KEY_A):
input_dir.x -= 1
if Input.is_key_pressed(KEY_D):
input_dir.x += 1
if Input.is_key_pressed(KEY_E):
input_dir.y += 1
if Input.is_key_pressed(KEY_Q):
input_dir.y -= 1
if input_dir.length() > 0:
input_dir = input_dir.normalized()
translate(input_dir * current_move_speed * delta)
func handle_rotation() -> void:
var current_rotation_x = rotation.x - mouse_delta.y * rotation_speed
current_rotation_x = clamp(current_rotation_x, -1.5, 1.5)
var current_rotation_y = rotation.y - mouse_delta.x * rotation_speed
rotation = Vector3(current_rotation_x, current_rotation_y, 0)
mouse_delta = Vector2.ZERO
func handle_scroll_wheel(event: InputEventMouseButton ) -> void:
if event.button_index == MOUSE_BUTTON_WHEEL_UP:
adjust_move_speed(1.0)
elif event.button_index == MOUSE_BUTTON_WHEEL_DOWN:
adjust_move_speed(-1.0)
func adjust_move_speed(delta: float) -> void:
current_move_speed = clamp(current_move_speed + delta, min_move_speed, max_move_speed)

View File

@@ -0,0 +1 @@
uid://le0spo0q018k

View File

@@ -0,0 +1,9 @@
[gd_scene load_steps=2 format=3 uid="uid://cy0nvmw51bwof"]
[ext_resource type="Script" uid="uid://le0spo0q018k" path="res://nodes/camera/controllable_camera.gd" id="1_fgom1"]
[node name="ControllableCamera" type="Camera3D"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
script = ExtResource("1_fgom1")
[node name="VoxelViewer" type="VoxelViewer" parent="."]