Advertisement
Mrigaya

Untitled

May 7th, 2021
607
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. extends KinematicBody
  2.  
  3.  
  4. var curHP : int = 100
  5. var maxHP : int = 100
  6. var ammo : int = 69
  7. var score : int = 0
  8.  
  9.  
  10. enum IN_BODY {
  11.     AIR,
  12.     TOXIC,
  13.     IRRADIATED,
  14.     WATER,
  15.     LAVA,
  16.     SWAMP,
  17.     OIL
  18. }
  19.  
  20. #References
  21. onready var head = $Head
  22. onready var foot = $Feet/Foot
  23.  
  24. #Mouse and Keyboard variables
  25. export var mouse_sensitivity = 1.0
  26. var input_direction = Vector3.ZERO
  27.  
  28. #Physics variables
  29. export var max_speed = 8
  30. export var acceleration = 8
  31. export var deacceleration = 4
  32. export var air_control = 0.0
  33. export var jump_height = 9.8
  34. export var gravity = 9.8
  35. export var max_slope = 75
  36. export var ignore_rotation = false
  37. var movement_vector = Vector3.ZERO
  38. var direction = Vector3.ZERO
  39. var drag = 0.0
  40. var gravity_vector = Vector3.ZERO
  41. var snap =Vector3.ZERO
  42. var onground = false
  43. #signal movement_info
  44. var frozen = false
  45. var body_to_move: KinematicBody
  46.  
  47.  
  48. func _ready():
  49.     Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
  50.     print("CAPTURED")
  51.     drag = float(acceleration) / float(max_speed)
  52.  
  53.  
  54. func _initialize(_body_to_move: KinematicBody):
  55.     pass
  56.  
  57.  
  58. func _input(event):
  59.    
  60.     #Mouse Input
  61.     if event is InputEventMouseMotion:
  62.         rotate_y(deg2rad(-event.relative.x * mouse_sensitivity)) # * get_physics_process_delta_time())
  63.         head.rotate_x(deg2rad(-event.relative.y * mouse_sensitivity)) # * get_physics_process_delta_time())
  64.         head.rotation.x = clamp(head.rotation.x, deg2rad(-90), deg2rad(90))
  65.        
  66.     #Keyboard Input
  67.     input_direction = global_transform.basis.x * (- int(Input.is_action_pressed("left")) + int(Input.is_action_pressed("right"))) + global_transform.basis.z * (- int(Input.is_action_pressed("forward")) + int(Input.is_action_pressed("backward")))
  68.    
  69.     input_direction = input_direction.normalized()
  70.     if Input.is_action_just_pressed("jump") and (is_on_floor() or _ground_check()):
  71.         print("JUMPED")
  72.         _dash_to_direction(Vector3.UP, jump_height, gravity)
  73.  
  74.  
  75. func _physics_process(delta):
  76.     _gravity(delta)
  77.     _move(delta)
  78.  
  79.  
  80. func _move(delta):
  81.     var target_movement_vector = input_direction * max_speed
  82.     movement_vector = movement_vector.linear_interpolate(target_movement_vector, acceleration * delta)
  83.     movement_vector = move_and_slide_with_snap(movement_vector, snap, Vector3.UP, true, 4, deg2rad(max_slope), true)
  84.  
  85.  
  86. func _gravity(delta):
  87.     if !is_on_floor() and !_ground_check():
  88.         gravity_vector += Vector3.DOWN * gravity * delta #gravity_vector += Vector3.DOWN * 0.5 * gravity * delta * delta
  89.     elif is_on_floor() or _ground_check():
  90.         gravity_vector = - get_floor_normal() * gravity
  91.     else:
  92.         gravity_vector = - get_floor_normal()
  93.     gravity_vector = move_and_slide_with_snap(gravity_vector, snap, Vector3.UP, true, 4, deg2rad(max_slope), true)
  94.  
  95.  
  96. func _ground_check():
  97.     if foot.is_colliding(): return true
  98.  
  99. #may change variable names
  100. func _dash_to_direction(dir: Vector3, target: float, magnitude: float):
  101.     dir = dir.normalized()
  102.     movement_vector += dir * sqrt(target * 2 * magnitude)
  103.     print(" y_vel -> ", movement_vector.y)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement