How can I accelerate in the same direction as the rocket ?

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By EnesMalik02

[My project link] 1

Imgur: The magic of the Internet (this is what i want)

Imgur: The magic of the Internet (this is how it happens)

extends KinematicBody

var speed = 20.0

var velocity = Vector3(0,0,0)
const SPEED = 5
const ROTATION = 3
const GRAVITY = 10
const JUMP = 500
var roketHiziUP = 10
onready var roket = $Cube003

func _ready():

func _physics_process(delta):

if Input.is_action_pressed("ui_up"):
	velocity.y += GRAVITY * delta
	velocity = move_and_slide(velocity, Vector3.UP)
elif Input.is_action_pressed("ui_right"):
elif Input.is_action_pressed("ui_left"):

elif Input.is_action_pressed("ui_down"):


I’m not very good with 3D but, but I think you want to have velocity going forward which is Vector3(0,0,-1) or Vector3.FORWARD. The way your code is, right now, it looks like you’re only using the y-axis (up/down) for both gravity and direction of movement. So, redefining your velocity variable at the beginning and maybe the move_and_slide vector at the end should make it better.

The gravity is pushing down and the -roketHiziUP pushing up… surprised it moves at all… So, maybe using the Vector3 constants would make it more clear:

Vector3 — Godot Engine (3.5) documentation in English

● FORWARD = Vector3( 0, 0, -1 )
Forward unit vector. Represents the local direction of forward, and the global direction of north.

CassanovaWong | 2022-09-02 13:28

:bust_in_silhouette: Reply From: Inces

First of all, You should create your sprites aligned to any of the main axis. I mean image of your rocket should be completely vertical or horizontal.
Now You can get the direction rocket object is facing by getting its Transform.basis.x or y.
It will always return the vector object is facing, no matter the current rotation.