Hello Unity community.
First of all, you will probably wonder what I exactly mean with that title. I wanted to make leading shoots to fire to mobile targets so that they will hit the target even though the target was in movement, so I found this page: http://wiki.unity3d.com/index.php/Calculating_Lead_For_Projectiles and copied these code, assuming it would work.
Then, when I tested my project, I noticed it wasn’t working, the shoots where facing the target’s current position. Later I noticed that Unity was assuming that the target velocity was 0, to be precise (0.0, 0.0, 0.0), the same as if the target was standing still.
At this point, I assumed that I had done my player movement wrong, so I need to know a movement code that Unity could recognise as a proper movement so that my leading shoots will work and the target.GetComponent().velocity would be greather than 0.
Here is my code:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class PlayerController : MonoBehaviour {
public float speed;
public float rotationSpeed;
void FixedUpdate ()
{ // Rotates right and left
transform.Rotate(0, -Input.GetAxis("Horizontal")*rotationSpeed*Time.deltaTime, 0,Space.World);
if (Input.GetKey("up")||Input.GetKey("w")){ // Goes forward
transform.Translate(0,0,Time.deltaTime*speed,Space.Self);
}
if(Input.GetKey ("down")||Input.GetKey("s")){ // Goes backward
transform.Translate(0,0,-Time.deltaTime*speed,Space.Self);
}
if (Input.GetKey ("e")){ // Goes right
transform.Translate(Time.deltaTime*speed,0, 0, Space.Self);
}
if (Input.GetKey ("q")){ // Goes left
transform.Translate(-Time.deltaTime*speed,0, 0, Space.Self);
}
}
}
I need to know if this code is right or, instead, a proper code that Unity could recognise as a movement (I tested the speed by writing “print(target.GetComponent().velocity)”. Could you tell me if this is right?