Added raycast
Added making object interactable Added slider + knob
This commit is contained in:
22
scripts/Player.gd
Normal file
22
scripts/Player.gd
Normal file
@@ -0,0 +1,22 @@
|
||||
extends CharacterBody3D
|
||||
|
||||
var gravity : float = ProjectSettings.get_setting("physics/3d/default_gravity")
|
||||
var speed : float = 5.0
|
||||
var mouse_sensitivity : float = 0.002
|
||||
@onready var camera_3d : Camera3D = $Camera3D
|
||||
|
||||
func _physics_process(delta : float) -> void:
|
||||
if not is_on_floor():
|
||||
velocity.y += -gravity * delta
|
||||
var input : Vector2 = Input.get_vector("left", "right", "forward", "back")
|
||||
var movement_dir : Vector3 = transform.basis * Vector3(input.x, 0, input.y)
|
||||
velocity.x = movement_dir.x * speed
|
||||
velocity.z = movement_dir.z * speed
|
||||
|
||||
move_and_slide()
|
||||
|
||||
func _input(event : InputEvent) -> void:
|
||||
if event is InputEventMouseMotion and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
|
||||
rotate_y(-event.relative.x * mouse_sensitivity)
|
||||
camera_3d.rotate_x(-event.relative.y * mouse_sensitivity)
|
||||
camera_3d.rotation.x = clampf(camera_3d.rotation.x, -deg_to_rad(70), deg_to_rad(70))
|
||||
35
scripts/Slider1.gd
Normal file
35
scripts/Slider1.gd
Normal file
@@ -0,0 +1,35 @@
|
||||
extends StaticBody3D
|
||||
|
||||
|
||||
@export var slider_length: float = 0.5
|
||||
@export var angle_degrees: float = 20.0
|
||||
@export var scroll_sensitivity: float = 0.025
|
||||
@onready var knob : MeshInstance3D = $Slider/Knob
|
||||
|
||||
var knob_position : float = 0.0
|
||||
var interacting : bool = false
|
||||
|
||||
func _ready() -> void:
|
||||
print("ready!")
|
||||
update_knob_position()
|
||||
|
||||
func _process(_delta : float) -> void:
|
||||
if interacting:
|
||||
if Input.is_action_just_pressed("scroll_up"):
|
||||
knob_position = clamp(knob_position + scroll_sensitivity, 0.0, 1.0)
|
||||
update_knob_position()
|
||||
elif Input.is_action_just_pressed("scroll_down"):
|
||||
knob_position = clamp(knob_position - scroll_sensitivity, 0.0, 1.0)
|
||||
update_knob_position()
|
||||
|
||||
func update_knob_position() -> void:
|
||||
var start_position : Vector3 = Vector3(0, 0.04, slider_length / 2)
|
||||
var end_position : Vector3 = Vector3(0, 0.04, -slider_length / 2)
|
||||
|
||||
var knob_world_position : Vector3 = start_position.lerp(end_position, knob_position)
|
||||
knob.position = knob_world_position
|
||||
print(knob_position)
|
||||
print(knob_world_position)
|
||||
|
||||
func make_interactable(interactable : bool) -> void:
|
||||
interacting = interactable
|
||||
Reference in New Issue
Block a user