Pickupable item

rose_physics
jonathan 2 months ago
parent 865a13335b
commit ea3f1588c3

@ -11,3 +11,5 @@ visible = false
[node name="InteractionRay" parent="Head" index="3" instance=ExtResource("2_xofgc")]
transform = Transform3D(1.2, 0, 0, 0, 1.2, 0, 0, 0, 1.2, 0, 0, 0)
[node name="GrabFixPoint" type="Node3D" parent="Head" index="4"]

@ -64,6 +64,25 @@ interact={
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null)
]
}
wheel_up={
"deadzone": 0.2,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":4,"canceled":false,"pressed":false,"double_click":false,"script":null)
]
}
wheel_down={
"deadzone": 0.2,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":5,"canceled":false,"pressed":false,"double_click":false,"script":null)
]
}
grab={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":114,"location":0,"echo":false,"script":null)
]
}
[physics]
3d/physics_engine="Jolt Physics"
[rendering]

@ -1,4 +1,4 @@
[gd_scene load_steps=28 format=3 uid="uid://gq33ysuit61b"]
[gd_scene load_steps=31 format=3 uid="uid://gq33ysuit61b"]
[ext_resource type="Script" uid="uid://o17v5m75ew03" path="res://scenes/custom_render.gd" id="1_gcpng"]
[ext_resource type="PackedScene" uid="uid://c70o7nk6wxcmx" path="res://models/UndertakerBlockout.fbx" id="2_gfayn"]
@ -10,6 +10,7 @@
[ext_resource type="Script" uid="uid://bmxu5xdxlq0e6" path="res://scenes/flickering_oven_light.gd" id="7_sve1f"]
[ext_resource type="VoxelGIData" uid="uid://bfwtxdvx4w12w" path="res://scenes/blockout_room.VoxelGI_data.res" id="8_dp7jk"]
[ext_resource type="Shader" uid="uid://bf2nxtrto5u5r" path="res://scenes/main_render.gdshader" id="9_k5i88"]
[ext_resource type="Script" uid="uid://bgrc6ktuxyrm6" path="res://scenes/pickupable.gd" id="10_5747v"]
[sub_resource type="BoxShape3D" id="BoxShape3D_gfayn"]
size = Vector3(12.2438965, 0.48779297, 13.901489)
@ -92,8 +93,12 @@ glow_intensity = 1.43
glow_strength = 1.04
glow_bloom = 0.16
[sub_resource type="BoxMesh" id="BoxMesh_5747v"]
[sub_resource type="BoxShape3D" id="BoxShape3D_mu0to"]
[sub_resource type="Curve" id="Curve_gcpng"]
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.26234567, 0.14241672), 0.0, 0.0, 0, 0, Vector2(0.5092592, 0.3427866), 0.0, 0.0, 0, 0, Vector2(0.79320985, 0.6313193), 0.0, 0.0, 0, 0, Vector2(0.87962955, 0.96794075), 0.0, 0.0, 0, 0, Vector2(1, 1), 0.063336894, 0.0, 0, 0]
_data = [Vector2(0, 0), 0.0, 0.0, 0, 0, Vector2(0.26234567, 0.14241672), 0.0, 0.0, 0, 0, Vector2(0.5092592, 0.3427866), 0.0, 0.0, 0, 0, Vector2(0.7561728, 0.6233045), 0.0, 0.0, 0, 0, Vector2(0.8641975, 0.97595555), 0.0, 0.0, 0, 0, Vector2(1, 1), 0.063336894, 0.0, 0, 0]
point_count = 6
[sub_resource type="CurveTexture" id="CurveTexture_5747v"]
@ -175,6 +180,9 @@ script = ExtResource("4_ui586")
[node name="Character" parent="SubViewportContainer/SubViewport" instance=ExtResource("4_tedjo")]
[node name="GrabFixPoint" parent="SubViewportContainer/SubViewport/Character/Head" index="4"]
transform = Transform3D(-0.9766723, 0, -0.21473524, 0, 1, 0, 0.21473524, 0, -0.9766723, 0, 0, 0)
[node name="Lever" parent="SubViewportContainer/SubViewport" instance=ExtResource("5_tedjo")]
transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 1.884376, 1.4100053, 4.976951)
@ -290,6 +298,26 @@ environment = SubResource("Environment_dp7jk")
transform = Transform3D(0.5765749, 0.8170443, 0, -0.8170443, 0.5765749, 0, 0, 0, 1, -2.4286354, 2.0967534, -0.82138157)
light_energy = 0.05
[node name="PhysBox" type="RigidBody3D" parent="SubViewportContainer/SubViewport"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.3421727, 0.88496697, 0)
freeze_mode = 1
script = ExtResource("10_5747v")
[node name="MeshInstance3D" type="MeshInstance3D" parent="SubViewportContainer/SubViewport/PhysBox"]
mesh = SubResource("BoxMesh_5747v")
[node name="CollisionShape3D" type="CollisionShape3D" parent="SubViewportContainer/SubViewport/PhysBox"]
shape = SubResource("BoxShape3D_mu0to")
[node name="PhysBox2" type="RigidBody3D" parent="SubViewportContainer/SubViewport"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.3421727, 1.967477, 0)
[node name="MeshInstance3D" type="MeshInstance3D" parent="SubViewportContainer/SubViewport/PhysBox2"]
mesh = SubResource("BoxMesh_5747v")
[node name="CollisionShape3D" type="CollisionShape3D" parent="SubViewportContainer/SubViewport/PhysBox2"]
shape = SubResource("BoxShape3D_mu0to")
[node name="TextureRect" type="TextureRect" parent="."]
material = SubResource("ShaderMaterial_gcpng")
anchors_preset = 15
@ -302,3 +330,5 @@ texture = SubResource("ViewportTexture_dp7jk")
[connection signal="on_hit" from="SubViewportContainer/SubViewport/Interactable" to="SubViewportContainer/SubViewport/DebugPrinter" method="_on_interactable_on_hit"]
[connection signal="changed" from="SubViewportContainer/SubViewport/Lever" to="SubViewportContainer/SubViewport/LidCrane" method="set_grab"]
[editable path="SubViewportContainer/SubViewport/Character"]

@ -0,0 +1,41 @@
extends RigidBody3D
@onready var grab_fix_point: Node3D = $"../Character/Head/GrabFixPoint"
var grabbed: bool = false
var rotate_todo:float = 0
func _input(event: InputEvent) -> void:
if event.is_action_pressed("wheel_up"):
rotate_todo += 30
if event.is_action_pressed("wheel_down"):
rotate_todo -= 30
if event.is_action_pressed("grab"):
grabbed = !grabbed
print("grab: %s"%grabbed)
if grabbed:
grab_fix_point.global_position = global_position
freeze = true
else:
freeze = false
func self_rotate(amount_deg:float):
var axis = Plane(Vector3.UP).project(-grab_fix_point.global_transform.basis.z).normalized()
var amount_rad =deg_to_rad(amount_deg)
print("Rotating around %s by %s deg or %s rad"%[axis,amount_deg,amount_rad])
rotate(axis,amount_rad)
print("New rotation: %s"%rotation_degrees)
func _physics_process(_delta: float) -> void:
if grabbed:
self_rotate(rotate_todo)
rotate_todo = 0
#var axis = Plane(Vector3.UP).project(-grab_fix_point.global_transform.basis.z).normalized()
#rotate(axis,_delta*3.14)
global_position = grab_fix_point.global_position

@ -0,0 +1 @@
uid://bgrc6ktuxyrm6
Loading…
Cancel
Save