unity射擊遊戲:超萌射手(2)射擊特效和EasyButton使用

前言


本文由作者@zx一路飛奔出品,轉載請註明出處
文章地址:http://blog.csdn.net/u014735301/article/details/42705443
作者微博:http://weibo.com/u/1847349851


射擊特效



(1)在槍口位置,添加一個點光源 當開槍時。啓用點光源。造成一種一閃一閃的效果




(2)添加一個粒子來充當子彈射擊的效果,當開槍時,發射粒子




(3)添加一個LineRenderer 線渲染器來模仿射擊軌跡,並設置合適的粗細



(4)射擊聲音也不能少~~~ 


最終效果如下





添加EasyButton






跟joystick屬性差不多,這裏選擇交互方式爲Event事件,修改 button紋理。和位置


腳本設置


using UnityEngine;
using System.Collections;

public class PlayerShoot : MonoBehaviour {

    //子彈射擊頻率
    public float shootRate = 2;
    public float attack = 30;
    private float timer = 0;
    private ParticleSystem particleSystem;
    private LineRenderer lineRenderer;


	// Use this for initialization
	void Start () {
        particleSystem = this.GetComponentInChildren<ParticleSystem>();
        lineRenderer = this.renderer as LineRenderer;
	}

    void OnEnable()
    {
        //按住button
        EasyButton.On_ButtonPress += On_ButtonPress;
        //鬆開button
        //EasyButton.On_ButtonUp += On_ButtonUp;
    }
    void On_ButtonPress(string buttonName)
    {   
        //如果按下的是fire Button
        if (buttonName == "Fire")
        {
            timer += Time.deltaTime;
            if (timer > 1 / shootRate)
            {
                timer -= 1 / shootRate;
                Shoot();
            }
        }
    }
	// Update is called once per frame
	void Update () {
        
	}
    //開火
    void Shoot() {
        light.enabled = true;
        particleSystem.Play();
        this.lineRenderer.enabled = true;
        lineRenderer.SetPosition(0, transform.position);
        //----------判斷射擊到敵人時的遊戲邏輯-----------
        Ray ray = new Ray(transform.position, transform.forward);
        RaycastHit hitInfo;
        if (Physics.Raycast(ray, out hitInfo)) {
            lineRenderer.SetPosition(1, hitInfo.point);
            //判斷當前的射擊有沒有碰撞到敵人
            if (hitInfo.collider.tag == Tags.enemy) {
                hitInfo.collider.GetComponent<EnemyHealth>().TakeDamage(attack,hitInfo.point);
            }

        } else {
            lineRenderer.SetPosition(1, transform.position + transform.forward * 100);
        }
        //播放射擊音效
        audio.Play();

        Invoke("ClearEffect", 0.05f);
    }

    void ClearEffect() {
        light.enabled = false;
        lineRenderer.enabled = false;
    }
}

點擊Button,持續射擊

最終效果,按住Button 持續射擊 是不是很萌很暴力呢~~~




總結


欲知後事,請聽下回分解!~~~~~~~



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章