Instantiating multiple interactive prefabs
Hey everyone! I'm using the code above to rotate 2D billboards for signs and other elements within my game. The latter part of the code is part of a "reaction" system in which the player looking at the signpost from a certain position will cause an exclamation point to pop above their head. The only problem is: this works perfectly with ONE billboard, but as soon as I procedurally generate more, only the last one uses the reaction code properly. They all rotate according to the LookAt line, so it's not an issue of the code not getting executed - it's just that the very last billboard I place is the only one to make the player react.
For context, the generation script has a public Transform that I drag the billboard prefab into.
I suspect there's some invisible pass-by-reference that happens somewhere that causes this, but I'm not sure where I've gone wrong.
Any help would be appreciated! Thanks!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BillboardRotate : MonoBehaviour {
[SerializeField] float interactRange = 60f;
[SerializeField] float interactAngle = 20f;
void Start () {
}
void Update () {
Vector3 ycomp = Camera.main.transform.position.y * Vector3.up;
this.transform.LookAt (Camera.main.transform.position - ycomp);
GameObject player = GameObject.FindGameObjectWithTag ("Player");
Vector3 toPlayer = this.transform.position - player.transform.position;
if (Vector3.Distance(this.transform.position, player.transform.position) < interactRange && Vector3.Angle(player.transform.forward, toPlayer) < interactAngle){
player.GetComponent<PlayerControl> ().React (1, true);
}else{
player.GetComponent<PlayerControl> ().React (1, false);
}
}
}