–1 vote

hello, I'm trying to do an fps and I'd like to know how to put air control in my game
can you help me ?

extends KinematicBody

var speed = 7
var acceleration = 20
var jump = 10
var gravity = 12
var hacceleration = 6
var air
acceleration = 1
var normal_acceleration = 6

var gravity_vec = Vector3()

var mouse_sensitivity = 0.1

var direction = Vector3()
var velocity = Vector3()
var fall = Vector3()
var movement = Vector3()

var h_velocity = Vector3()
onready var head = $head

func ready():
Input.set
mousemode(Input.MOUSEMODE_CAPTURED)
pass

func input(event):
if event is InputEventMouseMotion:
rotate
y(deg2rad(-event.relative.x * mousesensitivity))
head.rotate
x(deg2rad(-event.relative.y * mouse_sensitivity))
head.rotation.x = clamp(head.rotation.x, deg2rad(-90), deg2rad(90))

func physicsprocess(delta):
direction = Vector3()

if not is_on_floor():
    gravity_vec += Vector3.DOWN * gravity * delta
    h_acceleration = air_acceleration
elif is_on_floor():
    gravity_vec = -get_floor_normal() * gravity
    h_acceleration = normal_acceleration
else:
    gravity_vec = -get_floor_normal()
    h_acceleration = normal_acceleration



if Input.is_action_just_pressed("ui_accept") and is_on_floor():
    gravity_vec = Vector3.UP * jump



if Input.is_action_just_pressed("ui_cancel"):
    Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)

if Input.is_action_just_pressed("ui_accept"):
    Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)


if Input.is_action_pressed("ui_up"):
    direction -= transform.basis.z

elif Input.is_action_pressed("ui_down"):
    direction += transform.basis.z

if Input.is_action_pressed("ui_left"):
    direction -= transform.basis.x


elif Input.is_action_pressed("ui_right"):
    direction += transform.basis.x


direction = direction.normalized()
velocity = velocity.linear_interpolate(direction * speed, acceleration * delta)
velocity = move_and_slide(velocity, Vector3.UP)
h_velocity = h_velocity.linear_interpolate(direction * speed, h_acceleration * delta)
movement.z = h_velocity.z + gravity_vec.z
movement.x = h_velocity.x + gravity_vec.x
movement.y = gravity_vec.y

move_and_slide(movement, Vector3.UP)
Godot version v3.5
in Engine by (13 points)
retagged by

Please log in or register to answer this question.

Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read Frequently asked questions and How to use this Q&A? before posting your first questions.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to [email protected] with your username.