Advertisement
desync1337

1P character godot

Oct 24th, 2022
2,800
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.45 KB | Gaming | 0 0
  1.  
  2. var accel = 8 #ускорение
  3. var speed = 12 #скорость
  4. var jump = 9 #сила прыжка
  5. var sens = 0.1 #чувствительность камеры
  6. var _delta #дельта для фикса фпс
  7.  
  8. var direction = Vector2() #направление
  9. var vel = Vector3() #скорость
  10.  
  11. var gravity = -22 #гравитация
  12. var max_grav = -30 #максимальная скорость падения
  13.  
  14. onready var head = $head
  15.  
  16.  
  17. func _ready():
  18.     #ЗАХВАТЫВАЕМ КУРСОС ЧТОБЫ СМОТРЕТЬ
  19.     Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
  20.  
  21. func _physics_process(delta):
  22.     #ВЫЗЫВАЕМ ФУНКЦИЮ ДВИЖЕНИЯ
  23.     _delta = delta #определяем дельта для функций
  24.     dir()
  25.  
  26. #ФУНКЦИЯ СМОТРЕНИЯ
  27. func _input(event):
  28.     #если эвент = движение мыши то:
  29.     if event is  InputEventMouseMotion:
  30.         var movement = event.relative
  31.         #поворот вверх и вниз (только голову)
  32.         head.rotation.x += -deg2rad(movement.y * sens)
  33.         #чтобы не делать бэкфлип
  34.         head.rotation.x = clamp(head.rotation.x , deg2rad(-90), deg2rad(90))
  35.         #поворот вправо влево
  36.         rotation.y += -deg2rad(movement.x * sens)
  37.        
  38.        
  39. #функция движения
  40. func dir():
  41.     direction = Vector2(0,0)
  42. #определяем в какую сторону идти
  43.     if Input.is_action_pressed("+w"):
  44.         direction.y -= 1
  45.     elif Input.is_action_pressed("+s"):
  46.         direction.y += 1
  47.     if Input.is_action_pressed("+a"):
  48.         direction.x -= 1
  49.     elif Input.is_action_pressed("+d"):
  50.         direction.x += 1
  51. #нормализуем чтобы направление не сбивалось
  52.     direction = direction.normalized().rotated(-rotation.y)
  53. #вычисляем скорость с помощью направления
  54.     vel.x = lerp(vel.x, direction.x * speed, accel * _delta)
  55.     vel.z = lerp(vel.z, direction.y * speed, accel * _delta)
  56.    
  57. #гравитация в ход
  58.     vel.y += gravity * _delta
  59.    
  60. #чтобы слишком сильно не улетать
  61.     if vel.y < max_grav:
  62.         vel.y = max_grav
  63. #если мы на земле и нажимаем пробел то:
  64.     if Input.is_action_just_pressed("+space") and is_on_floor():
  65.         vel.y = jump #прыжок
  66.    
  67.     move_and_slide(vel,Vector3.UP) #двигаемся
  68.    
  69.     if is_on_floor() and vel.y < 0: #если мы стоим на полу значит мы не падаем :D
  70.         vel.y = 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement