Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma strict
- //Random damage
- var TheDamage1 : int = 0;
- var TheDamage2 : int = 0;
- //Get distance
- var Distance : float;
- //Max distance you can reach
- var MaxDistance : float = 1.5;
- //Animator
- var TheAnimator : Animator;
- //Delay when damage being dealt
- var DammageDelay : float = 0.6;
- //for animations
- var Hit01Streak :int= 0;
- var Hit02Streak :int= 0;
- //audio for weapons
- var HitWood : AudioClip[];
- var HitConcrete : AudioClip[];
- var HitMetal : AudioClip[];
- var HitGlass : AudioClip[];
- var HitEnemy : AudioClip[];
- var HitDirt : AudioClip[];
- var Swing : AudioClip[];
- //particles when you hit wall
- var woodFX : GameObject;
- var concreteFX : GameObject;
- var glassFX : GameObject;
- var metalFX : GameObject;
- var bloodFX : GameObject;
- var dirtFX : GameObject;
- //decals spawn on wall
- var decal : GameObject;
- var decalGlass : GameObject;
- var addpos : float = 0; //for hit decals
- //Timer for weapon can hit
- var canhit : boolean = false;
- var attackTimer : float = 0.0;
- var coolDown : float = 1.0;
- // Durability
- var Durability : float = 100;
- var MaxDurability : float = 100;
- var MinusDur1 : float = 100;
- var MinusDur2 : float = 100;
- var havewalk : boolean = false;
- static var canharvestwood : boolean = false;
- var canharvest2wood : boolean = false;
- static var canharveststone : boolean = false;
- var canharvest2stone : boolean = false;
- var wood : GameObject;
- function Update() {
- canharvestwood = canharvest2wood;
- canharveststone = canharvest2stone;
- if(Durability >=MaxDurability) {
- Durability = MaxDurability;
- }
- if(Durability <= 0) {
- Durability = 0;
- }
- if(Durability <= 0) {
- Destroy (gameObject);
- }
- if(attackTimer > 0)
- attackTimer -= Time.deltaTime;
- if(attackTimer < 0)
- attackTimer = 0;
- if(Input.GetButtonDown("Fire1"))
- {
- if(attackTimer == 0) {
- AttackDammage();
- AttackSound();
- attackTimer = coolDown;
- }
- }
- }
- function AttackSound() {
- audio.clip = (Swing[Random.Range(0,Swing.length)]);
- audio.Play();
- }
- function AttackDammage() {
- if(Random.value >= 0.5 && Hit01Streak <=2)
- {
- TheAnimator.SetBool("Hit01", true);
- Hit01Streak += 1;
- Hit02Streak = 0;
- }
- else
- {
- if (Hit02Streak <= 2)
- {
- TheAnimator.SetBool("Hit02",true);
- Hit01Streak = 0;
- Hit02Streak += 1;
- }
- else
- {
- TheAnimator.SetBool("Hit01", true);
- Hit01Streak +=1;
- Hit02Streak = 0;
- }
- }
- yield WaitForSeconds(DammageDelay);
- //actual attack
- var hit : RaycastHit;
- var ray = Camera.main.ScreenPointToRay(Vector3(Screen.width/2, Screen.height/2, 0));
- if(Physics.Raycast(ray, hit))
- {
- Distance = hit.distance;
- if(Distance < MaxDistance)
- {
- //var hitRotation = Quaternion.Euler( Random.Range(0, 360) , 0 , 0); //not working
- var hitRotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
- if(hit.transform.gameObject.tag == "Wood") {
- Instantiate(woodFX, hit.point, hitRotation);
- audio.clip = (HitWood[Random.Range(0,HitWood.length)]);
- audio.Play();
- Instantiate(decal, hit.point + (hit.normal * addpos), hitRotation);
- }
- if(hit.transform.gameObject.tag == "Concrete") {
- Instantiate(concreteFX, hit.point, hitRotation);
- audio.clip = (HitConcrete[Random.Range(0,HitConcrete.length)]);
- audio.Play();
- Instantiate(decal, hit.point + (hit.normal * addpos), hitRotation);
- }
- if(hit.transform.gameObject.tag == "Glass") {
- Instantiate(glassFX, hit.point, hitRotation);
- audio.clip = (HitGlass[Random.Range(0,HitGlass.length)]);
- audio.Play();
- Instantiate(decalGlass, hit.point + (hit.normal * addpos), hitRotation);
- }
- if(hit.transform.gameObject.tag == "Dirt") {
- Instantiate(dirtFX, hit.point + (hit.normal * addpos), hitRotation);
- Instantiate(dirtFX, hit.point, hitRotation);
- audio.clip = (HitDirt[Random.Range(0,HitDirt.length)]);
- audio.Play();
- Instantiate(decal, hit.point + (hit.normal * addpos), hitRotation);
- }
- if(hit.transform.gameObject.tag == "Metal") {
- Instantiate(metalFX, hit.point, hitRotation);
- audio.clip = (HitMetal[Random.Range(0,HitMetal.length)]);
- audio.Play();
- Instantiate(decal, hit.point + (hit.normal * addpos), hitRotation);
- }
- if(hit.transform.gameObject.tag == "Enemy") {
- Instantiate(bloodFX, hit.point, hitRotation);
- audio.clip = (HitEnemy[Random.Range(0,HitEnemy.length)]);
- audio.Play();
- Instantiate(decal, hit.point + (hit.normal * addpos), hitRotation);
- }
- hit.transform.SendMessage("ApplyDammage", Random.Range(TheDamage1,TheDamage2) , SendMessageOptions.DontRequireReceiver);
- // var blood = Instantiate(bloodFX, transform.position, Quaternion.identity);
- Durability -= Random.Range(MinusDur1,MinusDur2);
- }
- }
- TheAnimator.SetBool("Hit01", false);
- TheAnimator.SetBool("Hit02", false);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement