Prefab rotation problem
So i have an arrow prefab that is instantiated and force is added when mouse button released but the problem is once the arrow is in flight if i click mouse button again the arrow will rotate towards mouse again?
Here is the code for instantiating
void HandleRotation(){
if (Input.GetMouseButton(0)){
if(ArrowControl.thrust < 1000f){
ArrowControl.thrust++;
ArrowControl.thrust++;
}else{
ArrowControl.thrust = Random.Range (900f, 1000f);
}
Debug.Log (ArrowControl.thrust);
isAiming = true;
Vector3 pos = Camera.main.WorldToScreenPoint(transform.position);
Vector3 dir = Input.mousePosition - pos;
angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);
if(test){
Instantiate (arrow, arrowpoint.position, Quaternion.AngleAxis(angle, Vector3.forward));
test = false;
}
}
}
And here is the code for adding force to arrow
void AddPower(){
if (shoot) {
rotating = true;
Vector3 pos = Camera.main.WorldToScreenPoint(transform.position);
Vector3 dir = Input.mousePosition - pos;
angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg;
ArrowControl.arrowrb.AddForce (dir.normalized * ArrowControl.thrust);
ArrowControl.arrowrb.gravityScale = 1f;
test = true;
}
}
I also have a ArrowFlight function but i had this problem before the function so i dont think that it has anything to do with that.
Answer by rutter · Dec 01, 2015 at 12:22 AM
Your Instantiate
call returns a reference to the cloned object. You'll usually want to send any instructions or init calls to that clone -- you may also want to keep track of it in a list.
Instead, your current code appears to be keeping track of only one arrow. That's no good; if you want to have multiple arrows, your code will need to match that expectation.
There are plenty of tutorials for instantiating/cloning prefabs, so I recommend searching for them.