|
|
- extends "res://player.gd"
-
- const wallride_speed = 2
-
- master func _integrate_forces(state):
- ._integrate_forces(state)
- wallride(state)
-
- func wallride(state):
- var ray = get_node("Ray")
- # If our feet aren't touching, but we are colliding, we are wall-riding
- if !ray.is_colliding() and get_colliding_bodies():
- print("riding")
- var aim = get_node("Yaw").get_global_transform().basis
- var direction = Vector3()
- if Input.is_action_pressed("move_forwards"):
- direction -= aim[2]
- if Input.is_action_pressed("move_backwards"):
- direction += aim[2]
- #var n = -1 * (state.get_transform() * state.get_contact_local_normal(0))
- #direction = n.slide(direction) * wallride_speed
- direction *= 0.1
- set_gravity_scale(-0.1)
- apply_impulse(Vector3(), direction)
- state.integrate_forces()
- else:
- # We need to return to falling (we aren't riding anymore)
- set_gravity_scale(1)
|