Alright so I’m working on this canon thing where I walk into a trigger and a GUI Texture pops up that says “E” and when you press E, a canonball shooting forward gets spawned at a specified position, also a small particle effect of a explosion appears when the canonball appears. Here is the code I’m using and it doesn’t work at all so can someone help refine the code so it works and perhaps explain to me the new code because I’m really new at this.
public class CanonShoot : MonoBehaviour {
public Transform ballPos;
public Rigidbody Ball;
float forceAmount = 5000;
bool showGUI = false;
public Texture EtoShoot;
public GameObject effect;
void OnTriggerEnter()
{
Rigidbody ballRigid;
if ((Ball != null) && (ballPos != null) && Input.GetButtonDown("E"))
{
ballRigid = Instantiate(Ball, ballPos.position, ballPos.rotation) as Rigidbody;
Instantiate(effect, ballPos.position, ballPos.rotation);
if (ballRigid != null)
{
ballRigid.AddForce(ballPos.forward * forceAmount);
}
}
}
void OnTriggerStay(Collider other)
{
if (other.gameObject.tag == "Player")
showGUI = false;
}
void OnTriggerExit(Collider other)
{
if(other.gameObject.tag == "Player")
showGUI = false;
}
void OnGUI()
{
if (showGUI == true)
GUI.DrawTexture(new Rect(Screen.width / 4.5f, Screen.height / 4, 1024, 512),EtoShoot);
}
}
Thanks for the help and time!