![]() |
Attention | Topic was automatically imported from the old Question2Answer platform. |
![]() |
Asked By | Luke776 |
I want to make my player flyin such where my mouse/camera view is pointed my player will fly that direction if I am pressing the “W” key.
Here is my script:
extends KinematicBody
var vertical_velocity = 0
var gravity = 50
var direction = Vector3.FORWARD
var direction_fly = Vector3.UP
var velocity = Vector3.ZERO
var strafe_dir = Vector3.ZERO
var jump_magnitude = 18
var jump_blend = “parameters/jump_blend/blend_position”
var ag_transition = “parameters/ag_transition/current”
var ag_transition_active = “parameters/jump_blend/acitve”
var fligth_magnitude = 2
var velocity_fly = 0
var movement_speed = 0
var walk_speed = 3
var run_speed = 12
var acceleration = 7
var angular_acceleration = 7
var super_speed = 50
var speed_increase_increment = 1
func _physics_process(delta):
if Input.is_action_pressed(“Forward”) || Input.is_action_pressed(“Backward”) || Input.is_action_pressed(“Left”) || Input.is_action_pressed(“Right”):
var h_rot = $Camroot/h.global_transform.basis.get_euler().y
direction = Vector3(Input.get_action_strength("Left") - Input.get_action_strength("Right"),
0,
Input.get_action_strength("Forward") - Input.get_action_strength("Backward")).rotated(Vector3.UP,h_rot).normalized()
if Input.is_action_pressed("Sprint"):
movement_speed = run_speed
$AnimationTree.set("parameters/iwr_blend/blend_amount", lerp($AnimationTree.get("parameters/iwr_blend/blend_amount"), 1 , delta * acceleration))
else:
$AnimationTree.set("parameters/iwr_blend/blend_amount", lerp($AnimationTree.get("parameters/iwr_blend/blend_amount"), 0 , delta * acceleration))
movement_speed = walk_speed
else :
$AnimationTree.set("parameters/iwr_blend/blend_amount", lerp($AnimationTree.get("parameters/iwr_blend/blend_amount"), -1 , delta * acceleration))
movement_speed = 0
# faz com que o botão que foi pressionado ative uma ação e se for pressionado de novo desativa a ação
if is_on_floor():
if Input.is_action_pressed("Jump"):
vertical_velocity = jump_magnitude
$AnimationTree.set(ag_transition,0)
else :
$AnimationTree.set(ag_transition,1)
$AnimationTree.set(jump_blend, lerp($AnimationTree.get(jump_blend), vertical_velocity/jump_magnitude, delta * 10 ))
if gravity <0:
gravity = 50
if Input.is_action_just_pressed("Flight"):
if gravity == 0:
gravity = 50
vertical_velocity = 0
run_speed =12
walk_speed = 3
else:
gravity = 0
vertical_velocity = delta * gravity
run_speed = 50
walk_speed = 5
if gravity ==0 and !is_on_floor():
if Input.is_action_pressed("Up"):
velocity.y += fligth_magnitude * 2
if Input.is_action_pressed("E"):
velocity.y -= fligth_magnitude * 2
elif is_on_floor():
velocity.y = 0
if Input.is_action_pressed("r") and !is_on_floor():
gravity = 1
movement_speed = 30
else:
gravity = 50
velocity = lerp(velocity,direction * movement_speed, delta * acceleration)
move_and_slide(velocity + Vector3.UP * vertical_velocity,Vector3.UP)
if !is_on_floor():
vertical_velocity -= gravity * delta
else:
vertical_velocity = 0
$Mesh/MineCharatertrue/SimplePlayerarma.rotation.y = lerp_angle($Mesh/MineCharatertrue/SimplePlayerarma.rotation.y,atan2(direction.x,direction.z), delta * angular_acceleration)