2023-09-30 21:13:55 +00:00
|
|
|
extends Node
|
|
|
|
class_name GravityFromGyro
|
|
|
|
|
|
|
|
|
2023-10-03 00:02:59 +00:00
|
|
|
var emulated_gravity = Vector3.ZERO
|
|
|
|
|
|
|
|
|
2023-09-30 21:13:55 +00:00
|
|
|
func _physics_process(_delta):
|
|
|
|
var accel_3d = Input.get_accelerometer()
|
2023-09-30 23:37:25 +00:00
|
|
|
if accel_3d == Vector3.ZERO: # If accelerometer is not supported
|
2023-10-03 00:02:59 +00:00
|
|
|
accel_3d = (Vector3.UP * Input.get_action_strength("gravity_up") + Vector3.DOWN * Input.get_action_strength("gravity_down") + Vector3.LEFT * Input.get_action_strength("gravity_left") + Vector3.RIGHT * Input.get_action_strength("gravity_right")) * 9.8
|
2023-10-24 18:44:13 +00:00
|
|
|
if accel_3d == Vector3.ZERO: # If nothing is being pressed
|
|
|
|
accel_3d = (Vector3.DOWN * 0.05) * 9.8
|
|
|
|
|
2023-09-30 23:37:25 +00:00
|
|
|
|
2023-09-30 21:13:55 +00:00
|
|
|
var accel_2d = Vector2(accel_3d.x, -accel_3d.y) / 9.8
|
|
|
|
PhysicsServer2D.area_set_param(get_viewport().find_world_2d().space, PhysicsServer2D.AREA_PARAM_GRAVITY_VECTOR, accel_2d)
|