- Home /
help needed: moving smoothly in 4 directions + 1 constant forward acceleration ?
hey everyone! i need some help with a simple moving script problem. Just before we go into details, I'm rookie, so detailed "instructions" are welcome
what i want to acchive:
a spaceship which can fly into 4 directions ( up, down, left, right and for diagonally) and a constant "forward" acceleration. it a firstperson view game. Maybe the movement from starfox is an good example, basically an on-rail shooter with this movement.
right now it's looking like this:
1 gameobject,
our shipour ship forward acceleration (js):
ar moveSpeed = 10.0;
var sideMovement = 10.0;
var upMovement = 10.0;
function Update ()
{
var sideMovement = Input.GetAxis("Horizontal") * moveSpeed;
sideMovement *= Time.deltaTime;
transform.Translate(sideMovement,0,moveSpeed);
var upMovement = Input.GetAxis("Vertical") * moveSpeed;
upMovement *= Time.deltaTime;
transform.Translate(upMovement,0,moveSpeed);
}
our ship movement:
var keyboardSpeed = 20.0;
function FixedUpdate () {
// This is where we move the object.
// Get input from the keyboard, with automatic smoothing (GetAxis instead of GetAxisRaw).
// We always want the movement to be framerate independent, so we multiply by Time.deltaTime.
var keyboardX = Input.GetAxis("Horizontal") * keyboardSpeed * Time.deltaTime;
var keyboardY = Input.GetAxis("Vertical") * keyboardSpeed * Time.deltaTime;
// Calculate the new position based on the above input.
// If you want to limit the movement, you can use Mathf.Clamp
// to limit the allowed range of newPos.x or newPos.y.
var newPos = rigidbody.position + Vector3(keyboardX, keyboardY, 0.0);
// Move the object.
rigidbody.MovePosition(newPos);
}
// Require a Rigidbody component to be attached to the same GameObject.
@script RequireComponent(Rigidbody)
THE PROBLEM:
if we move our ship in any direction (especially in the diagonal ones) the moving animation looks kinda laggy or "not smooth"). how can we solve this? any script snips & pieces are welcome
EDIT: this was just our first way to do it, i have no problem with replacing the code with an other one!
Answer by fabio1955 · Mar 25, 2013 at 10:50 PM
In one case you move the object via the transform.position in the other you act on the rigid body. I also see something strange in the 2 translate statement: both act on x and z axis.
Hope this help..
Your answer
Follow this Question
Related Questions
How to make camera position relative to a specific target. 1 Answer
how to let an object drive on a road? 1 Answer
Mesh Collider stops me from controlling the object? 0 Answers
Airplane Stall 0 Answers
Fix flying control 1 Answer