3dremoteplayer.gd 900 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. extends KinematicBody
  2. var gravity = Vector3.DOWN * 12 # strength of gravity
  3. var speed = 4 # movement speed
  4. var jump_speed = 12 # jump strength
  5. var spin = 0.1 # rotation speed
  6. var velocity = Vector3()
  7. var rotang = Vector3()
  8. var target = Transform()
  9. var id
  10. #func _ready():
  11. func get_input():
  12. velocity = target.origin - self.get_global_transform().origin
  13. rotang = acos(target.basis.xform(Vector3(0, 0, 1)).x) - acos(self.get_global_transform().basis.xform(Vector3(0, 0, 1)).x)
  14. func _physics_process(delta):
  15. velocity += gravity * delta
  16. get_input()
  17. velocity = move_and_slide(velocity, Vector3.UP)
  18. rotate_y(rotang)
  19. func _unhandled_input(event):
  20. if event is InputEventMouseMotion:
  21. if event.relative.x > 0:
  22. rotate_y(-lerp(0, spin, event.relative.x/10))
  23. elif event.relative.x < 0:
  24. rotate_y(-lerp(0, spin, event.relative.x/10))
  25. func set_target(trans):
  26. self.target = trans