@Dschoonmaker said:
Can I see your code?
absolutely. and for whatever reason when I preview this message it looks very strange so sorry for that.
extends KinematicBody
#old variables
export var speed : float = 20
export var acceleration : float = 15
export var air_acceleration : float = 5
export var gravity : float = 0.98
export var max_terminal_velocity : float = 54
export var jump_power : float = 20
export(float, 0.1, 1) var mouse_sensitivity : float = 0.3
export(float, -90, 0) var min_pitch : float = -90
export(float, 0, 90) var max_pitch : float = 90
var moveDir : Vector3
var y_velocity : float
onready var camera_pivot = $player
onready var camera = $cameraRig/SpringArm/Camera
#new variables
var cameraAngle = Vector2.ZERO
var cameraZoom = 2.25
var cameraOffset = Vector3(0,1.5,0)
#clamping camera varibales
#capturing mouse input
func _ready():
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
#making cursor visible on ui cancel
func _process(delta):
if Input.is_action_just_pressed("ui_cancel"):
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
#rotate camera with mouse input?
func _input(event):
if event is InputEventMouseMotion:
rotation_degrees.y -= event.relative.x * mouse_sensitivity
$camera_pivot.rotation_degrees.x -= event.relative.y * mouse_sensitivity
$camera_pivot.rotation_degrees.x = clamp(camera_pivot.rotation_degrees.x, min_pitch, max_pitch)
func _physics_process(delta):
handle_movement(delta)
update_camera()
func update_camera():
cameraAngle.x = fmod(cameraAngle.x, 2*PI)
cameraAngle.y = clamp(cameraAngle.y, 0.01, PI-0.01)
$Camera.translation = Vector3.ZERO
#X+=sqrt(cameraZoom)*sin(cameraAngle.y)*(sqrt(cameraZoom)*cos(cameraAngle.x))
#Z+=sqrt(cameraZoom)*sin(cameraAngle.y)*(sqrt(cameraZoom)*sin(cameraAngle.x))
#Y+=cameraZoom*cos(cameraAngle.y)
$Camera.translation.x+=sqrt(cameraZoom)*sin(cameraAngle.y)*(sqrt(cameraZoom)*cos(cameraAngle.x))
$Camera.translation.z+=sqrt(cameraZoom)*sin(cameraAngle.y)*(sqrt(cameraZoom)*sin(cameraAngle.x))
$Camera.translation.y+=cameraZoom*cos(cameraAngle.y)
func handle_movement(delta):
#clamping moveDir
moveDir = Vector3(clamp(moveDir.x, -1, 1),clamp(moveDir.y, -1, 1),clamp(moveDir.z, -1, 1))
#moveDir
moveDir.x -= cos(cameraAngle.x)*Input.get_action_strength("move_forward")
moveDir.z -= sin(cameraAngle.x)*Input.get_action_strength("move_forward")
moveDir.x -= cos(cameraAngle.x+PI)*Input.get_action_strength("move_backward")
moveDir.z -= sin(cameraAngle.x+PI)*Input.get_action_strength("move_backward")
moveDir.x -= cos(cameraAngle.x+(270*PI/180))*Input.get_action_strength("move_left")
moveDir.z -= sin(cameraAngle.x+(270*PI/180))*Input.get_action_strength("move_left")
moveDir.x -= cos(cameraAngle.x+(90*PI/180))*Input.get_action_strength("move_right")
moveDir.z -= sin(cameraAngle.x+(90*PI/180))*Input.get_action_strength("move_right")
moveDir = moveDir.normalized()
var accel = acceleration if is_on_floor() else air_acceleration
moveDir = moveDir.linear_interpolate(moveDir * speed, accel * delta)
if is_on_floor():
y_velocity = -0.01
else:
y_velocity = clamp(y_velocity - gravity, -max_terminal_velocity, max_terminal_velocity)
if Input.is_action_just_pressed("jump") and is_on_floor():
y_velocity = jump_power
moveDir.y = y_velocity
moveDir = move_and_slide(moveDir, Vector3.UP)