[Unity学习笔记:FPS游戏制作]子弹拖尾,碰撞与枪口火焰效果

Posted 曾胖神父

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Unity学习笔记:FPS游戏制作]子弹拖尾,碰撞与枪口火焰效果相关的知识,希望对你有一定的参考价值。

往期博客[Unity学习笔记:FPS游戏制作(2)] 发射子弹————(2021.6.20学习笔记)

一,实现思路

使用粒子系统制作子弹拖尾特效与子弹碰撞特效,碰撞碎屑飞溅特效。在子弹生成的时候,将拖尾粒子效果置于子弹的子物体集中,保证拖尾粒子效果能跟随子弹物体一起运动,然后在子弹碰撞到物体的时候,在子弹位置生成碰撞特效与碎屑飞溅特效

二,粒子效果的实现

(1)子弹拖尾特效的实现

新建一个粒子系统对象,重命名为BulletTailE,修改参数值如下图





子弹拖尾特效实现效果如下图

(2)枪口火焰特效的实现

新建一个粒子系统对象,重命名为OpenFireP,修改参数值如下图





枪口火焰特效实现效果如下图

(3)碎屑飞溅特效的实现

新建一个粒子系统对象,重命名为ExplosionDetritus,修改参数值如下图





碎屑飞溅特效实现效果如下图

(4)子弹碰撞爆炸波特效的实现

新建一个粒子系统对象,重命名为ExplosionEffect,修改参数值如下图





子弹碰撞爆炸波特效实现效果如下图

(5)子弹碰撞特效的实现

将碎屑飞溅特效设置为爆炸波特效的子物体,使两个特效合成为子弹碰撞特效,效果如下图

三,子弹与物体碰撞触发粒子特效的实现

(1)设置子弹预制体与被碰撞物体的参数

给子弹预制体添加刚体与碰撞体组件,并将碰撞体组件的IsTrigger选项点开,然后给被碰撞物体添加碰撞体组件,详细设置如下图


(2)子弹碰撞物体触发特效代码的实现

代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BulletScript : MonoBehaviour
{
   
    public GameObject BulletTPrefab;//子弹拖尾特效预制体
    public GameObject ExplosionPrefab;//子弹爆炸特效预制体
    void Start()
    {
        GameObject BulletTail = Instantiate(BulletTPrefab);
        BulletTail.transform.parent = transform;
        BulletTail.transform.rotation = transform.rotation;
        BulletTail.transform.localPosition = new Vector3(0, 0, 0);//在指定坐标生成子弹
    }

   
    void Update()
    {
      
    }
    
    private void OnTriggerEnter(Collider other)//当物体接触到另外一个刚体时触发
    {
     
        GameObject ExplosionEffect = Instantiate(ExplosionPrefab,transform.position,transform.rotation);
        Destroy(ExplosionEffect, 2);

    }
   
}

把该脚本挂载于子弹预制体

四,最终效果

以上是关于[Unity学习笔记:FPS游戏制作]子弹拖尾,碰撞与枪口火焰效果的主要内容,如果未能解决你的问题,请参考以下文章

Ruby‘s Adventrue游戏制作笔记Unity角色攻击——发射子弹

Ruby‘s Adventrue游戏制作笔记Unity角色攻击——发射子弹

Ruby‘s Adventrue游戏制作笔记Unity角色攻击——发射子弹

Ruby‘s Adventrue游戏制作笔记(十六)Unity子弹数量及其UI

Ruby‘s Adventrue游戏制作笔记(十六)Unity子弹数量及其UI

Ruby‘s Adventrue游戏制作笔记(十六)Unity子弹数量及其UI