开枪的时候通常会有一条火舌以及光和声音,这里讲一下在游戏中的开枪效果的制作。
首先你的枪口或是其他设计物体的开火口出要有一个物体,空物体也行,用来定位特效位置,这样比较方便。
然后该物体持有特效子物体、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;
}
}
具体细节这里就不解释了,有不懂得可以百度。