Can't move forward??

Hey there

I wrote a script to move an object to a target point. this is my script:

private void moveToRnd(){

        float x = transform.position.x - newPos.x;
        float y = 0f;
        float z = transform.position.z - newPos.z;

        Vector3 forward = new Vector3(x,y,z);
        float length = forward.magnitude;
        forward = (1 / length) * forward;
        float curSpeed = speed;
        //motor is a CharacterMotor
        motor.SimpleMove(curSpeed * forward);
        gameObject.transform.LookAt (new Vector3 (newPos.x, transform.position.y, newPos.z));
    }

the only problem is, that the object moves backwards to my target. (It looks in the right direction)
every try to turn the direction (*(-1) or change newPos with transform.position) broke my script and the object doesn´t move…

can anyone help me?

thank you

You can subtract vectors :slight_smile:

Vector3 heading = (newPos - transform.position).normalized;
transform.position += heading * speed * Time.deltaTime;

Thanks for the reply, but I had a reason for doing that: it doesn’t work with this technique.

I tried this any way and it did: nothing…
My object does not move

Why and how do I use the move method from the charactermotor?
I tried it like the scripting api said, but this doesn’t work for me (my character moves backwards in the wrong direction)

Help please!

transform.position.x - newPos.x;

This will calculate the position to the transform.position.x from newPos.x. I assume you’re going backwards because you want to calculate the opposite.

Try:

float x = newPos.x - transform.position.x;
float y = 0f;
float z = newPos.z - transform.position.z;
1 Like

Well, i tried this yesterday and it didn`t worked…
now i restarted unity and it works…

thank you for your help

Okay there is still a problem:

my code works, until I add this line:

transform.LookAt(new Vector3(newPos.x,transform.position.y,newPos.z));

when i add this, my character doesn`t move…

could anyone explain me this?

thanks