37 lines
635 B
GDScript3
37 lines
635 B
GDScript3
![]() |
|
||
|
extends RigidBody
|
||
|
|
||
|
var picked_up
|
||
|
|
||
|
var holder
|
||
|
|
||
|
func pick_up(player):
|
||
|
holder = player
|
||
|
|
||
|
if picked_up:
|
||
|
leave()
|
||
|
else:
|
||
|
carry()
|
||
|
|
||
|
func _process(delta):
|
||
|
if picked_up:
|
||
|
set_global_transform(holder.get_node("Yaw/Camera/pickup_pos").get_global_transform())
|
||
|
|
||
|
func carry():
|
||
|
$CollisionShape.set_disabled(true)
|
||
|
holder.carried_object = self
|
||
|
self.set_mode(1)
|
||
|
picked_up = true
|
||
|
|
||
|
func leave():
|
||
|
$CollisionShape.set_disabled(false)
|
||
|
holder.carried_object = null
|
||
|
self.set_mode(0)
|
||
|
picked_up = false
|
||
|
|
||
|
|
||
|
|
||
|
func throw(power):
|
||
|
leave()
|
||
|
apply_impulse(Vector3(), holder.look_vector * Vector3(power, power, power))
|