Hey, so I was wondering how I could rotate the direction of the raycast to the left or the projectile itself without effecting the flight direction. The problem I am facing is that the raycast is sticking out to the left, meaning that it wont ditect a hit when the particle flys towards something, only objects 1.5f to the right of it. If someone could help, I would be so grateful…thanks in advance!
//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 = 20;
//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);
}
// Update is called once per frame
void Update ()
{
//Translate the projectile in the up direction (the pointed
//end of the projectile).
myTransform.Translate(Vector3.left * projectileSpeed * Time.deltaTime);
//If the ray hits something then execute this code.
Debug.DrawRay( myTransform.position, myTransform.forward * range, Color.red );
if(Physics.Raycast(myTransform.position,myTransform.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);
}
}