unity射击游戏:超萌射手(2)射击特效和EasyButton使用

前言


本文由作者@zx一路飞奔出品,转载请注明出处
文章地址:http://blog.csdn.net/u014735301/article/details/42705443
作者微博:http://weibo.com/u/1847349851


射击特效


unity射击游戏:超萌射手(2)射击特效和EasyButton使用_第1张图片


(1)在枪口位置,添加一个点光源 当开枪时。启用点光源。造成一种一闪一闪的效果


unity射击游戏:超萌射手(2)射击特效和EasyButton使用_第2张图片


(2)添加一个粒子来充当子弹射击的效果,当开枪时,发射粒子


unity射击游戏:超萌射手(2)射击特效和EasyButton使用_第3张图片


(3)添加一个LineRenderer 线渲染器来模仿射击轨迹,并设置合适的粗细


unity射击游戏:超萌射手(2)射击特效和EasyButton使用_第4张图片


(4)射击声音也不能少~~~ 


最终效果如下


unity射击游戏:超萌射手(2)射击特效和EasyButton使用_第5张图片


添加EasyButton




unity射击游戏:超萌射手(2)射击特效和EasyButton使用_第6张图片

跟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();
        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().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 持续射击 是不是很萌很暴力呢~~~


unity射击游戏:超萌射手(2)射击特效和EasyButton使用_第7张图片


总结


欲知后事,请听下回分解!~~~~~~~



你可能感兴趣的:(【unity3d】【项目】)