Topic was automatically imported from the old Question2Answer platform.
Asked By
unfa
Old Version
Published before Godot 3 was released.
I’m trying to make a very simple game just to walk around a scenery, but making the character walk in the direction of which he’s facing seems like impossible.
I can rotate the character but he’s always walking along the global axis, instead of forward relative it it’s rotation.
My code for player object:
extends RigidBody
# member variables here, example:
# var a=2
# var b="textvar"
var turn_speed = 60
var walk_speed = 100
func _ready():
set_fixed_process(true)
pass
func _fixed_process(delta):
if (Input.is_action_pressed("ui_left")):
rotate_y(-turn_speed*0.1*delta)
elif (Input.is_action_pressed("ui_right")):
rotate_y(turn_speed*0.1*delta)
if (Input.is_action_pressed("ui_up")):
# walk forward
elif (Input.is_action_pressed("ui_down")):
# walk backward
give me the basis to start moving things in 3D space
specially the Moving in local axes section
The problem is that translate() causes objects to glitch out in the physics simulation (breath through walls) because it makes the object teleport between discreet locations every frame, instead of following a steady, force-driven motion
unfa | 2016-04-01 10:49
But get_transform() can not work in ridgind body can it?My understanding is that get_transform() does not use physics, and ignores all rules such as gravity, friction, and colisions that modify motion; wich makes it virtually unusable to make a player (plz correct me if I am wrong). Usually for physics with ridgid body we use get_axis, wich works on globall axies. So is there a get_axis_local or something that could work with the ridgid body?
Also, the “func add_force” will apply_impulse on 0, 1, and 2 (x y and z respectivly axees), are those locall or global, or can they be eather depending on the get_axis (or whatever else you will use) function?