Files
reedgamingstudio 5b8ebb7a35 test
testing
2014-12-16 00:23:12 -06:00

76 lines
2.2 KiB
JavaScript

#pragma strict
import System.Collections.Generic;
var speed : int = 500;
var life : float = 3;
var damage : int = 20;
var impactForce : int = 10;
var impactHoles : boolean = true;
//Does bullet do any damage to target?
var doDamage : boolean = false;
//Impact prefab name corresponds a tag it should hit
var impactObjects : List.<GameObject>;
private var velocity : Vector3;
private var newPos : Vector3;
private var oldPos : Vector3;
private var hasHit : boolean = false;
function Start () {
newPos = transform.position;
oldPos = newPos;
velocity = speed * transform.forward;
// schedule for destruction if bullet never hits anything
Destroy( gameObject, life );
}
function Update () {
if( hasHit )
return;
// assume we move all the way
newPos += velocity * Time.deltaTime;
// Check if we hit anything on the way
var direction : Vector3 = newPos - oldPos;
var distance : float = direction.magnitude;
if (distance > 0) {
var hit : RaycastHit;
if (Physics.Raycast(oldPos, direction, hit, distance)) {
// adjust new position
newPos = hit.point;
// notify hit
hasHit = true;
var rotation : Quaternion = Quaternion.FromToRotation(Vector3.up, hit.normal);
//Apply force if we hit rigidbody
if (hit.rigidbody){
hit.rigidbody.AddForce( transform.forward * impactForce, ForceMode.Impulse );
}
//////////////////////////////////////////////////////////////////HIT SURFACES/////////////////////////////////////////////////////////////
if(impactHoles){
//var impact : GameObject;
for(var i : int = 0; i<impactObjects.Count; i++){
if(hit.transform.tag == impactObjects[i].name){
Instantiate(impactObjects[i], hit.point, rotation);
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//We cant hit ourselfs
if(hit.transform.tag != "Player" && doDamage){
hit.transform.SendMessageUpwards("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);
}
Destroy (gameObject, 1);
}
}
oldPos = transform.position;
transform.position = newPos;
}
@script AddComponentMenu ("FPS system/Weapon System/Bullet Controller")