Hey, I just wanted this projectile to fly forward using “Addforce” but all it does is drop straight to the floor. Can someone help me? It would be really appreciated!
//Variables Start___________________________________
//The explosion effect is attached to this
//in the inspector
public GameObject mudParticle;
//A quick reference.
private Transform myTransform;
//The projectiles flight speed.
private float projectileSpeed = 500;
//Prevent the projectile from causing
//further harm once it has hit something.
private bool expended = false;
//A ray projected in front of the projectile
//to see if it will hit a recognisable collider.
private RaycastHit hit;
//The range of that ray.
private float range = 1.5f;
//The life span of the projectile.
private float expireTime = 10;
//Variables End_____________________________________
// Use this for initialization
void Start()
{
myTransform = transform;
//As soon as the projectile is created start a countdown
//to destroy it.
Destroy (gameObject, expireTime);
//Translate the projectile in the forward direction (the pointed
//end of the projectile).
rigidbody.AddForce(myTransform.forward * projectileSpeed * Time.deltaTime);
}
// Update is called once per frame
void Update ()
{
//If the ray hits something then execute this code.
Debug.DrawRay( myTransform.position, Vector3.forward * range, Color.red );
if(Physics.Raycast(myTransform.position, Vector3.forward, out hit, range) && expended == false)
{
//If the collider has the tag of Floor then..
Debug.Log( "Ray Hit (floorMud) : " + hit.collider.transform.tag );
{
expended = true;
//Instantiate an explosion effect.
Instantiate(mudParticle, hit.point, Quaternion.identity);
//Make the projectile become invisible.
myTransform.renderer.enabled = false;
}
}
}
IEnumerator DestroyMyselfAfterSomeTime()
{
//Wait for the timer to count up to the expireTime
//and then destroy the projectile.
yield return new WaitForSeconds(expireTime);
Destroy(myTransform.gameObject);
}
}