agentsmith200
agentsmith200

Reputation: 121

Unity - Vector3.MoveTowards does not move at constant speed

I'm trying to design a spitball/poison type projectile that will travel until it reaches the point clicked on screen and then destroys itself. The problem is that contrary to what almost everyone says, Vector3.Movetowards is not moving the ball at a constant speed. If the target location is close to the launcher it moves slowly, if it is further away it moves much faster.

public float speed = 5f;
public Vector3 target = new Vector3();
void Update()
{

    transform.position = Vector3.MoveTowards(transform.position, target,speed * Time.deltaTime);
}

Adding the launcher script

 private void Shooting()
{
    if (Input.GetMouseButton(0))
    {
        if (Time.time >= shotTime)
        {
           
            GameObject poison = Instantiate(Projectile, shotPoint.position, transform.rotation);
            Vector3 target = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            target.z = 10f;
            poison.GetComponent<PoisonBall>().target = target;
            shotTime = Time.time + timeBetweenShots;
        }
    }
}

Upvotes: 4

Views: 2321

Answers (1)

derHugo
derHugo

Reputation: 90639

Is the balls start position also at z=10f? Otherwise the difference in the speed most probably is a perspective issue in a 2D game and results in your bullet traveling in the Z direction but from your camera perspective you don't see that.

=> The closer you will be to the target the more movement will only happening on the Z axis, the further away the more movement is happening on X and Y.

Make sure to also do

var spawn = shotPoint.position;
spawn.z = 10f;
GameObject poison = Instantiate(Projectile, spawn, transform.rotation);

Or alternatively keep target.z = 0 (just remove the line target.z = 10f as per default the ScreenToWorld uses the Z component of given vector as depth and you are passing in a 2D vector with 0 depth anyway) and instead use Vector2.MoveTowards which will ignore ant depth on Z.

Upvotes: 1

Related Questions