This question was 
             closed Jan 07, 2019 at 12:19 AM by 
             MasonXY for the following reason: 
             
 
            The question is answered, right answer was accepted
Trouble with Velocity speeding things up.
I am trying to create a turret that tracks the player's movement, and fires a projectile at the player at regular intervals. I've gotten it to work, but have run into a problem in play testing.
I am poor at explaining things, so let me illustrate my problem.

The way I have the turret tracking is by making the velocity the player's position - turret position. This seemed like a fast way to get it going in the direction I wanted it to.
But, this means that the further away the player is from the turret, the faster the projectile seems to move relative to the player.
I'm a newbie on Unity, so I'm not sure how to address the problem.
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class TurretTracking : MonoBehaviour {
 
 
     [SerializeField] float rotationSpeed = 5f;
     [SerializeField] GameObject player = null;
     [SerializeField] GameObject bullet = null;
     [SerializeField] GameObject firingPoint = null;
 
     [Header("These two should be the same")]
     [SerializeField] float shotCounter = 5f;
     [SerializeField] float storeCounter = 5f;
     // Use this for initialization
     private void Start()
     {
         player = FindObjectOfType<Player>().gameObject;
     }
 
     // Update is called once per frame
     void Update ()
     {
         TrackPlayer();
         CountDownAndShoot();
     }
 
     private void TrackPlayer()
     {
         Vector3 playerPosition = player.transform.position;
 
 
         Vector2 direction = new Vector2(playerPosition.x - transform.position.x, playerPosition.y - transform.position.y);
         Vector2 neutralPosition = new Vector2(0, 0);
 
         var relativeYPosition = transform.position.y - player.transform.position.y;
 
         if (relativeYPosition <= 0)
         { transform.up = -neutralPosition; }
         else
         { transform.up = -direction; }
     }
 
     private void CountDownAndShoot()
     {
         
         shotCounter -= Time.deltaTime;
         if (shotCounter <= 0f) 
         {
             Fire();
             shotCounter = storeCounter;
         }
     }
 
     private void Fire()
     {
 
         Vector2 firingDirection = new Vector2(player.transform.position.x - this.transform.position.x, player.transform.position.y - this.transform.position.y);
         GameObject projectile = Instantiate(bullet, firingPoint.transform.position, transform.rotation)as GameObject;
         projectile.GetComponent<Rigidbody2D>().velocity = firingDirection;
     }
 }
 
 
                 
                velocity-problem.png 
                (233.0 kB) 
               
 
              
               Comment
              
 
               
               koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                