Advertisement
Aighton

Godot Car Script

Sep 13th, 2022
3,138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Godot GLSL 1.74 KB | Source Code | 0 0
  1. #the car script
  2.  
  3. extends KinematicBody
  4.  
  5. var active = false
  6.  
  7. var y_velo = 0
  8.  
  9. var car_zone = false
  10.  
  11. func _physics_process(_delta):
  12.     if active:
  13.         $Camera.make_current()
  14.         movement()
  15.         leaving_car()
  16.     elif !active:
  17.         entering_car()
  18.         pass
  19.    
  20.     pass
  21.  
  22. func movement():
  23.     var move_speed = 20
  24.     var jump_force = 35
  25.     var rotate_speed = 2
  26.  
  27.     var gravity = 1.2
  28.     var max_fall_speed = 20
  29.  
  30.     var move_vec = Vector3()
  31.     if Input.is_key_pressed(KEY_W):
  32.         move_vec.z -= 1
  33.     if Input.is_key_pressed(KEY_S):
  34.         move_vec.z += 1
  35.     if Input.is_key_pressed(KEY_D):
  36.         self.rotate_y(deg2rad(-rotate_speed))
  37.     if Input.is_key_pressed(KEY_A):
  38.         self.rotate_y(deg2rad(rotate_speed))
  39.  
  40.     move_vec = move_vec.normalized()
  41.     move_vec = move_vec.rotated(Vector3(0, 1, 0), rotation.y)
  42.     move_vec *= move_speed
  43.     move_vec.y = y_velo
  44.     move_and_slide(move_vec, Vector3(0, 1, 0))
  45.  
  46.     var grounded = is_on_floor()
  47.     y_velo -= gravity
  48.     if grounded and y_velo <= 0:
  49.         y_velo = -0.1
  50.     if y_velo < max_fall_speed:
  51.         y_velo = -max_fall_speed   
  52.        
  53. func entering_car():
  54.     if Input.is_action_just_pressed("ui_e") && car_zone:
  55.         var hidden_player = get_parent().get_node("player")
  56.         hidden_player.active = false
  57.         $Camera.make_current()
  58.         active = true
  59.        
  60. func leaving_car():
  61.     var vehicle = $"."
  62.     var hidden_player = get_parent().get_node("player")
  63.     var newLoc = vehicle.global_transform.origin - 2*vehicle.global_transform.basis.x
  64.    
  65.     if car_zone == false && Input.is_action_just_pressed("ui_e"):
  66.         hidden_player.active = true
  67.         active = false
  68.         hidden_player.global_transform.origin = newLoc
  69.    
  70.  
  71. func _on_player_detect_body_entered(body):
  72.     if body.name == "player":
  73.         car_zone = true
  74.  
  75. func _on_player_detect_body_exited(body):
  76.     if body.name == "player":
  77.         car_zone = false
  78.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement