var BulletGravity : float = 9.8;
var DecalHitWall : GameObject;
var FloatInFrontOfWall : float = 0.00001;
@HideInInspector
var MoveDirection : Vector3;
@HideInInspector
var ShortestSoFar : float;
@HideInInspector
var InstantiatePoint : Vector3;
@HideInInspector
var InstantiateRotation : Quaternion;
@HideInInspector
var FoundHit : boolean = false;
@HideInInspector
var ParentToAdd : Transform;
function awake (){
transform.Rotate((Random.value * 2 * RandomAngle) - RandomAngle, 0, Random.value*360);
MoveDirection = transform.forward * speed;
ShortestSoFar = Mathf.Infinity;
FoundHit = false;
}
function Update () {
transform.rotation = Quaternion.LookRotation(MoveDirection);
var hits : RaycastHit [];
hits = Physics.RaycastAll(transform.position, transform.forward, speed * Time.deltaTime);
for (var hit in hits) {
if(hit.transform.tag == "Level Parts"){
if(Vector3.Distance(transform.position, hit.point)< ShortestSoFar) {
instantiatePoint = hit.point +(hit.normal*(FloatInFrontOfWall+Random.Range(0,0.01)));
instantiateRotation = Quaternion.LookRotation(hit.normal);
ShortestSoFar = Vector3.Distance(transform.position, hit.point);
FoundHit = true;
}
}
}
if(FoundHit){
var spawnedBulletHole : GameObject = Instantiate (DecalHitWall, InstantiatePoint, InstantiateRotation);
if(ParentToAdd){
spawnedBulletHole.transform.parent = ParentToAdd;
Destroy (gameObject);
}
}
transform.position += MoveDirection * Time.deltaTime;
MoveDirection.y -= BulletGravity * Time.deltaTime;
LifeTime -= Time.deltaTime;
if(LifeTime < 0){
Destroy(gameObject);
}