|
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)
|