diff options
Diffstat (limited to 'demos/3d/kinematic_char/cubio.gd')
-rw-r--r-- | demos/3d/kinematic_char/cubio.gd | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/demos/3d/kinematic_char/cubio.gd b/demos/3d/kinematic_char/cubio.gd deleted file mode 100644 index 769ada3bca..0000000000 --- a/demos/3d/kinematic_char/cubio.gd +++ /dev/null @@ -1,86 +0,0 @@ - -extends KinematicBody - -# Member variables -var g = -9.8 -var vel = Vector3() -const MAX_SPEED = 5 -const JUMP_SPEED = 7 -const ACCEL= 2 -const DEACCEL= 4 -const MAX_SLOPE_ANGLE = 30 - - -func _fixed_process(delta): - var dir = Vector3() # Where does the player intend to walk to - var cam_xform = get_node("target/camera").get_global_transform() - - if (Input.is_action_pressed("move_forward")): - dir += -cam_xform.basis[2] - if (Input.is_action_pressed("move_backwards")): - dir += cam_xform.basis[2] - if (Input.is_action_pressed("move_left")): - dir += -cam_xform.basis[0] - if (Input.is_action_pressed("move_right")): - dir += cam_xform.basis[0] - - dir.y = 0 - dir = dir.normalized() - - vel.y += delta*g - - var hvel = vel - hvel.y = 0 - - var target = dir*MAX_SPEED - var accel - if (dir.dot(hvel) > 0): - accel = ACCEL - else: - accel = DEACCEL - - hvel = hvel.linear_interpolate(target, accel*delta) - - vel.x = hvel.x - vel.z = hvel.z - - var motion = move(vel*delta) - - var on_floor = false - var original_vel = vel - var floor_velocity = Vector3() - var attempts = 4 - - while(is_colliding() and attempts): - var n = get_collision_normal() - - if (rad2deg(acos(n.dot(Vector3(0, 1, 0)))) < MAX_SLOPE_ANGLE): - # If angle to the "up" vectors is < angle tolerance, - # char is on floor - floor_velocity = get_collider_velocity() - on_floor = true - - motion = n.slide(motion) - vel = n.slide(vel) - if (original_vel.dot(vel) > 0): - # Do not allow to slide towads the opposite direction we were coming from - motion=move(motion) - if (motion.length() < 0.001): - break - attempts -= 1 - - if (on_floor and floor_velocity != Vector3()): - move(floor_velocity*delta) - - if (on_floor and Input.is_action_pressed("jump")): - vel.y = JUMP_SPEED - - var crid = get_node("../elevator1").get_rid() - - -func _ready(): - set_fixed_process(true) - - -func _on_tcube_body_enter(body): - get_node("../ty").show() |