如何制作游戏中的开枪效果
发表于2017-12-01
开枪的时候通常会有一条火舌以及光和声音,这里讲一下在游戏中的开枪效果的制作。
首先你的枪口或是其他设计物体的开火口出要有一个物体,空物体也行,用来定位特效位置,这样比较方便。
然后该物体持有特效子物体、light和LineRenderer组件以及AudioSource组件,这些组件要设置相应的参数,这里引用一下介绍LineRenderer组件的网页:点击打开链接。
下面是该物体的脚本:
using UnityEngine; using System.Collections; public class PlayerShoot : MonoBehaviour { public float shootRate = 8; float timer; float shootPeriod; Light fireLight; ParticleSystem particleSystem;//子物体的粒子特效 LineRenderer lineRenderer; AudioSource fireAudio; // Use this for initialization void Start () { shootPeriod = 1 / shootRate; fireLight = GetComponent<Light>(); particleSystem = GetComponentInChildren<ParticleSystem>(); lineRenderer = GetComponent<LineRenderer>() as LineRenderer; fireAudio = GetComponent<AudioSource>(); } // Update is called once per frame void Update () { if (Input.GetMouseButton(1)) { timer += Time.deltaTime; if (timer > shootPeriod) { timer -= shootPeriod; Shoot(); } } } void Shoot(){ fireLight.enabled = true; particleSystem.Play(); //枪发出的射线 当射击到了物体以后火舌停在物体身上,否则火舌从枪口向前延伸100米 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); } else { lineRenderer.SetPosition(1, transform.position+transform.forward*100); } fireAudio.Play(); Invoke("ClearEffect", 0.05f); } void ClearEffect() { lineRenderer.enabled = false; fireLight.enabled = false; } }
具体细节这里就不解释了,通过该物体的脚本大家就可以制作出开枪效果了。