Added raycast
Added making object interactable Added slider + knob
This commit is contained in:
27
scenes/Camera3D.gd
Normal file
27
scenes/Camera3D.gd
Normal file
@@ -0,0 +1,27 @@
|
||||
extends Camera3D
|
||||
|
||||
@onready var raycast : RayCast3D = $RayCast3D
|
||||
var last_collided_object : CollisionObject3D = null
|
||||
|
||||
func _process(_delta : float) -> void:
|
||||
check_interaction()
|
||||
|
||||
func check_interaction() -> void:
|
||||
if raycast.is_colliding():
|
||||
var collider : CollisionObject3D = raycast.get_collider()
|
||||
if collider != last_collided_object:
|
||||
if last_collided_object != null:
|
||||
print("Stopped looking at interactable object:", last_collided_object.name)
|
||||
if last_collided_object.has_method("make_interactable"):
|
||||
last_collided_object.make_interactable(false)
|
||||
print("Started looking at interactable object:", collider.name)
|
||||
last_collided_object = collider
|
||||
if collider.has_method("make_interactable"):
|
||||
collider.make_interactable(true)
|
||||
|
||||
else:
|
||||
if last_collided_object != null:
|
||||
print("Stopped looking at interactable object:", last_collided_object.name)
|
||||
if last_collided_object.has_method("make_interactable"):
|
||||
last_collided_object.make_interactable(false)
|
||||
last_collided_object = null
|
||||
64
scenes/control_panel.tscn
Normal file
64
scenes/control_panel.tscn
Normal file
@@ -0,0 +1,64 @@
|
||||
[gd_scene load_steps=11 format=3 uid="uid://bte0jkgh6vd8x"]
|
||||
|
||||
[ext_resource type="Script" path="res://scripts/Slider1.gd" id="1_nyunj"]
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_6i38b"]
|
||||
size = Vector3(3, 1, 1)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4f8ex"]
|
||||
albedo_color = Color(0.351563, 0.351563, 0.351563, 1)
|
||||
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_ymgdf"]
|
||||
material = SubResource("StandardMaterial3D_4f8ex")
|
||||
size = Vector3(3, 1, 0.3)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_em8o8"]
|
||||
albedo_color = Color(0.351563, 0.351563, 0.351563, 1)
|
||||
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_7rk03"]
|
||||
material = SubResource("StandardMaterial3D_em8o8")
|
||||
size = Vector3(3, 0.1, 1)
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_gw828"]
|
||||
size = Vector3(0.1, 0.05, 0.6)
|
||||
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_5801d"]
|
||||
size = Vector3(0.05, 0.05, 0.5)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ldgvd"]
|
||||
albedo_color = Color(0.0438094, 0.444896, 0.673899, 1)
|
||||
|
||||
[sub_resource type="CylinderMesh" id="CylinderMesh_s3lht"]
|
||||
material = SubResource("StandardMaterial3D_ldgvd")
|
||||
top_radius = 0.02
|
||||
bottom_radius = 0.02
|
||||
height = 0.1
|
||||
|
||||
[node name="ControlPanel" type="StaticBody3D"]
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0.5, 0.5)
|
||||
shape = SubResource("BoxShape3D_6i38b")
|
||||
|
||||
[node name="Structure" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.5, 0.5, 0.5)
|
||||
mesh = SubResource("BoxMesh_ymgdf")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="Structure"]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.939693, -0.34202, 0, 0.34202, 0.939693, 0, 0.55, 0)
|
||||
mesh = SubResource("BoxMesh_7rk03")
|
||||
|
||||
[node name="Slider1" type="StaticBody3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.939693, -0.34202, 0, 0.34202, 0.939693, 0.182479, 1.06904, 0.591278)
|
||||
script = ExtResource("1_nyunj")
|
||||
|
||||
[node name="RaycastCollider" type="CollisionShape3D" parent="Slider1"]
|
||||
shape = SubResource("BoxShape3D_gw828")
|
||||
|
||||
[node name="Slider" type="MeshInstance3D" parent="Slider1"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
|
||||
mesh = SubResource("BoxMesh_5801d")
|
||||
|
||||
[node name="Knob" type="MeshInstance3D" parent="Slider1/Slider"]
|
||||
transform = Transform3D(-4.37115e-08, 1, -4.37115e-08, 0, -4.37114e-08, -1, -1, -4.37114e-08, 1.91069e-15, 0, 0.04, 0.25)
|
||||
mesh = SubResource("CylinderMesh_s3lht")
|
||||
4
scenes/main.gd
Normal file
4
scenes/main.gd
Normal file
@@ -0,0 +1,4 @@
|
||||
extends Node3D
|
||||
|
||||
func _ready() -> void:
|
||||
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||
32
scenes/main.tscn
Normal file
32
scenes/main.tscn
Normal file
@@ -0,0 +1,32 @@
|
||||
[gd_scene load_steps=6 format=3 uid="uid://dlekwle45c0y2"]
|
||||
|
||||
[ext_resource type="Script" path="res://scenes/main.gd" id="1_12te6"]
|
||||
[ext_resource type="PackedScene" uid="uid://bte0jkgh6vd8x" path="res://scenes/control_panel.tscn" id="1_j1pw0"]
|
||||
[ext_resource type="PackedScene" uid="uid://u6bx2c081h3n" path="res://scenes/player.tscn" id="2_04ebg"]
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_3nuje"]
|
||||
size = Vector3(50, 2, 50)
|
||||
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_py2d4"]
|
||||
size = Vector3(50, 2, 50)
|
||||
|
||||
[node name="Main" type="Node3D"]
|
||||
script = ExtResource("1_12te6")
|
||||
|
||||
[node name="ControlPanel" parent="." instance=ExtResource("1_j1pw0")]
|
||||
|
||||
[node name="SpotLight3D" type="SpotLight3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.568088, 0.822968, 0, -0.822968, 0.568088, 1.3562, 2.47603, 2.06382)
|
||||
light_energy = 16.0
|
||||
|
||||
[node name="Player" parent="." instance=ExtResource("2_04ebg")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.26895, 1.48304, 1.97319)
|
||||
|
||||
[node name="Ground" type="StaticBody3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1, 0)
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Ground"]
|
||||
shape = SubResource("BoxShape3D_3nuje")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="Ground/CollisionShape3D"]
|
||||
mesh = SubResource("BoxMesh_py2d4")
|
||||
42
scenes/player.tscn
Normal file
42
scenes/player.tscn
Normal file
@@ -0,0 +1,42 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://u6bx2c081h3n"]
|
||||
|
||||
[ext_resource type="Script" path="res://scripts/Player.gd" id="1_s6pnw"]
|
||||
[ext_resource type="Script" path="res://scenes/Camera3D.gd" id="2_vvm4p"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_vhrs0"]
|
||||
radius = 0.2
|
||||
|
||||
[node name="Player" type="CharacterBody3D"]
|
||||
script = ExtResource("1_s6pnw")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
shape = SubResource("CapsuleShape3D_vhrs0")
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.673565, 0)
|
||||
script = ExtResource("2_vvm4p")
|
||||
|
||||
[node name="RayCast3D" type="RayCast3D" parent="Camera3D"]
|
||||
target_position = Vector3(0, 0, -3)
|
||||
|
||||
[node name="PlayerUI" type="Control" parent="."]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="ColorRect" type="ColorRect" parent="PlayerUI"]
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -0.5
|
||||
offset_top = -0.5
|
||||
offset_right = 1.5
|
||||
offset_bottom = 1.5
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
Reference in New Issue
Block a user