c#语言使用Unity粒子系统制作手雷爆炸

目录
  • 一、创建地形
  • 二、应用资源包
  • 三、制作手雷

一、创建地形

1、GameObject ->3D Object-> Terrain,创建带有地形属性的平面

2、Terrain-〉最后一个工具(Terrain Settings)->Set Resolution-〉SetHeightmap resolution ,把地形设置为500*500

3、调整视图

  • Hierarchy->Camera,选择默认的摄像机
  • Hierarchy->Camera->Inspector->Position->X=250,Y=100,Z=-250, Game中能看到一个梯形状的平面(以后随时调整XYZ值得到最佳效果)

4、设置地形高度

SetHeight

Height->200

5、设置地形背景

二、应用资源包

1、下载资源

从unity官网中下载好所需要的资源包

“Third Person Controller - Basic Locomotion FREE.unitypackage”

“Environment Pack Free Forest Sample.unitypackage”

2、导入资源

Assets->Import Package->Custom Package->依次选中Package包

3、Project ->All Prefabs->将显示人像的ThirdPersonController_LITE预制件拖拉到Scene窗口中的地面上(参数可以选用默认值),同时将与ThirdPersonController_LITE相隔3个的vThirdPersonCamera_LITE预制件拖拉到Scene窗口中(该预制件能跟踪人体的运动,替代默认的Camera)。

4、选中Hierarchy-〉Untitled->Main Camera,在Inspector下的Main Camera左边的小框中的勾选去掉,让Main Camera失效。

三、制作手雷

1、导入SceneShot.unitypackage

2、将Grenade置入场景中

3、Collisions.cs脚本程序(1) //拖拽到ThirdPersonController_LITE上

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

public class Collisions : MonoBehaviour
{
    public static int GRENADE_AMMO = 0;
    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        RaycastHit hit;
        //check if we are collidering
        float rayCastLength = 5;
        Vector3 offset = new Vector3(0,0.5f,0);
        if (Physics.Raycast(transform.position+offset, transform.forward,out hit ,rayCastLength ))
        {
            //...with a door
            if (hit.collider.gameObject.tag == "Door")
            {
                //open the door
                hit.collider.gameObject.GetComponent<Animation>().Play("Door-open");    

            }
        }
        Debug.DrawRay(transform.position + offset, transform.forward, Color.red);

    }
    void OnTriggerEnter(Collider hit)
    {

        if (hit.gameObject.tag == "CrateGrenades")
        {
            Debug.Log("hit");
            //destory the ammo box
            Destroy(hit.gameObject);
            //add ammo to inventory
            GRENADE_AMMO += 200;
            print("YOU NOW HAVE " + GRENADE_AMMO + " GRENADES");
        }
    }
}

4、Shooting.cs脚本程序 //拖拽到ThirdPersonController_LITE上

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

public class Shooting : MonoBehaviour
{
    // Start is called before the first frame update
    float  speed = 3;
    Vector3 offset = new Vector3(0, 1.0f, 0f);
    [Tooltip("gp")]
    public GameObject GrenadePrefab;
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        Screen.lockCursor = true;
        //find out if a fire button is pressed
        if (Input.GetMouseButtonDown(0))
        {
            Debug.Log("shoot");
            if (Collisions.GRENADE_AMMO > 0)
            {
                //create the prefab
                    GameObject grenade = Instantiate(GrenadePrefab, this.transform.localPosition+ offset+ transform.forward, Quaternion.identity);
                //add force to the prefab
                grenade.GetComponent<Rigidbody>().AddForce(transform.forward * 20, ForceMode.Impulse);
                Collisions.GRENADE_AMMO--;
                print("YOU NOW HAVE " + Collisions.GRENADE_AMMO + " GRENADES");
            }
        }
    }
}

5、GrenadeScript.cs脚本程序 //将脚本拖拽到grenade预制体上

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

public class GrenadeScript:MonoBehaviour
{
    private float creationTime;
    public GameObject explosionPrefab;
    int lifetime = 3;
    // Start is called before the first frame update
    void Start()
    {

    }
    void Awake()
    {
        Debug.Log("count");
        creationTime = Time.time;
    }
    // Update is called once per frame
    void Update()
    {
        if (Time.time > (creationTime + lifetime))
        {
            //Destroy(this.gameObject);
            Instantiate(explosionPrefab, transform.position, Quaternion.identity);
        }
    }
}

6、在当前工程文件的Assets目录下,建一个Audio文件夹,将手榴弹爆炸音效文件Grenade.mp3,拷贝到Audio文件夹中

点击Project->Assets->Audio->Grenade音乐文件,在Inspector面板最下方有一个运行按钮(右下方的Grenade栏右边的箭头),可以倾听音效

Project-〉Prefabs-〉explosion- >在Inspector中点击Add Component ->Audio->Audio Source,在Inspector中的Audio Source下有AudioClip,

选Grenade音乐组件单击Hierarchy-〉vThirdPersonCamera_LITE,查看Inspector面板上的组件属性,Audio Listener起到在游戏运行时侦听场景中的音乐效果

运行,按键盘的左健,发射手榴弹,手榴弹落地后消失,在产生火焰爆炸特效的同时,可以侦听到手榴弹爆炸的声音特效

7、最终效果

以上就是c#语言使用Unity粒子系统制作手雷爆炸的详细内容,更多关于Unity粒子系统制作手雷爆炸的资料请关注我们其它相关文章!

(0)

相关推荐

  • 详解Unity使用ParticleSystem粒子系统模拟药水在血管中流动(粒子碰撞)

    一.前言 点关注不迷路,持续输出Unity干货文章. 嗨,大家好,我是新发. 之前我写了一篇Unity流体模拟的文章:<Unity流体模拟,支持粒子系统,支持流体碰撞交互(Obi Fluid插件使用教程)> 然后有同学私信我,问我能否做药剂打入血管的效果. 这个嘛,用ObiFluid可以做,不过我今天要尝试的,是用另一种方式:直接使用Unity的粒子系统来做. 二.最终效果 最终效果如下,效果虽然一般,不过制相对简单很多. 本文Demo工程已上传到CodeChina,感兴趣的同学可自行下载学习

  • Unity游戏开发之射击小游戏的实现

    目录 前言 游戏画面展示 游戏代码解析 游戏打包 总结 前言 人们一直都说学习和玩游戏不能兼顾,那我们就来边学习怎样制作游戏,边玩游戏 不就兼得了嘛~ 我可真是一个小天才呢~ 所以本篇文章为大家带来一个 横版2D射击小游戏,游戏制作超级简单,玩法一学就会, 一起来看看吧! 游戏画面展示 这款小游戏只用了两个UI界面,一个是菜单界面,另一个是战斗界面 菜单界面有三种模式,分别是一般.困难和地狱 战斗界面就是很简单的从两边刷野怪,然后主角开枪打死他们 UI搭建很简单,只有一张背景图使用Image,加

  • Unity 使用tiledmap解析地图的详细过程

    1.先使用tiledmap编辑地图,图层用来刷图块,对象用来定义单个格子的数据 2.为每个图块调属性 3.图块需要单独配置属性的就必须创建对象,并设置值 右键设置属性 4.导出json文件 5.代码如下,详细看相应注释 using SimpleJSON; using System.Collections; using System.Collections.Generic; using UnityEngine; public class tmx : MonoBehaviour { void Sta

  • C#使用Unity实现IOC

    一.什么是IOC 学习IOC之前先来了解一个依赖导致原则(DIP),依赖导致原则是IOC的核心原理. 依赖导致:即上层模块不应该依赖于低层模块,二者应该通过抽象来依赖.依赖于抽象,而不是依赖于细节. 首先来看下面的例子: 1.定义一个接口,封装数据库的基本CRUD操作,接口定义如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threadin

  • Unity游戏开发之炸弹人游戏的实现

    目录 前言 制作思路 开始制作 第一步:游戏场景制作 第二步:墙体代码 第三步:炸弹人制作 第四步:炸弹处理 第五步:敌人制作 第六步:游戏控制器 第七步:UI控制器 前言 大家小时候肯定玩过这款游戏,炸弹人也算是经典中的经典啦~ 希望看到这篇小游戏,可以让你重拾童年跟小伙伴一起对着大屁股电视机玩游戏的美好时光! 时间在慢慢的流逝,那些陪你一起度过童年的小伙伴有多久没联系了呢~ 看完这篇炸弹人,有时间的话就找自己童年的小伙伴们聊会天吧,一起找回童年的回忆和梦想! 回归主题,炸弹人小游戏制作开始!

  • c#语言使用Unity粒子系统制作手雷爆炸

    目录 一.创建地形 二.应用资源包 三.制作手雷 一.创建地形 1.GameObject ->3D Object-> Terrain,创建带有地形属性的平面 2.Terrain-〉最后一个工具(Terrain Settings)->Set Resolution-〉SetHeightmap resolution ,把地形设置为500*500 3.调整视图 Hierarchy->Camera,选择默认的摄像机 Hierarchy->Camera->Inspector->

  • 易语言密码查看功能制作

    易语言密码查看插件制作步骤 1.如你所见  一个编辑框 和一个按钮 2. _按钮1_鼠标左键被按下 _按钮1_鼠标左键被放开 编辑框 输入方式 密码输入 你懂得 3.代码不能少 .版本 2 .程序集 窗口程序集_启动窗口 .子程序 _按钮1_鼠标左键被按下, 逻辑型 .参数 横向位置, 整数型 .参数 纵向位置, 整数型 .参数 功能键状态, 整数型 编辑框1.输入方式 = 0 .子程序 _按钮1_鼠标左键被放开, 逻辑型 .参数 横向位置, 整数型 .参数 纵向位置, 整数型 .参数 功能键状

  • 易语言二维码生成器制作教学

    二维码的使用度和普及度相当的高,无论是在广告推送.网站跳转.信息获取,还是在手机支付都在应用,网页的上生成二维码就见不少,现在用易语言来来看怎样制作二维码生成器,当然这里也是调用API接口,所以难度不大! 1.百度搜索一下二维码开入平台,选择一个开放.免费的可以调用的接入就可以了,这里就以排名第一的作为演示例子! 2.进来后,就可以看到这里有详细的说明,做过API调用都知道,方法都大同小异异,看看他的使用说明和例子就能理解! 3.回到易语言操作界面,简单做一下界面,图片预览用的是图片框,颜色选择

  • C#语言使用Unity实现剪刀石头布游戏

    本文实例为大家分享了C#语言使用Unity实现剪刀石头布游戏的具体代码,供大家参考,具体内容如下 游戏:剪刀石头布 实现功能: 1.电脑随机出牌(剪刀石头布) 2.玩家选择出牌(剪刀石头布) 3.玩家没有出牌时,电脑变幻牌面: 玩家出牌后,电脑出牌,并停止变幻牌面3秒,期间玩家无法选择出牌 4.玩家和电脑出牌后,电脑自动计分. using UnityEngine; using System.Collections; public class hw0310a : MonoBehaviour { /

  • 超详细,教你用python语言实现QQ机器人制作教程

    目录 前期准备 1.机器人框架的下载和配置 2.python的配置和安装 具体实现 1.发送信息 (1)比如发送私聊信息(QQ用接收者的): (2)发送群聊信息(群号自己用一个): (3)当然不止发送文本信息 2.获取群成员列表 3.接收上报的事件 4.实现简单的自动回复 前期准备 1.机器人框架的下载和配置 首先需要一个qq机器人框架,我使用的是基于mirai 以及 MiraiGo 开发的go-cqhttp(里面有开发文档). 框架下载地址 Windows下32位文件为 go-cqhttp-v

  • R语言入门使用RStudio制作包含Rcpp代码的R包

    目录 1. 创建项目 2. 修改一些文件 3. 打包 4. 使用Eigen或其它依赖库会出现的问题 前面博客中有提及,当我们进行模拟想要再次进行提速时,通常都会使用Rcpp将我们的R代码改成C++代码.具体Rcpp的使用可参考博客:Rcpp入门R代码提速方法过程,R语言学习RcppEigen进行矩阵运算. 平时在我们使用的时候,直接使用Rcpp::sourceCpp()就可以直接将我们的C++代码中的函数进行导入,这不会遇到什么问题,但如果我们想要使用snowfall进行并行时就不能再这样做了.

  • Unity摇杆制作的方法

    本文实例为大家分享了Unity摇杆制作方法的具体代码,供大家参考,具体内容如下 一.UI制作 1.首先创建一个空物体,命名为摇杆,锚点调至左下角 2.创建一个image作为摇杆厨盆的有效地方,并命名为tough_place 3.创建一个image放入摇杆的背景图片,并命名为bg. 4.创建一个image放入摇杆的控制点,并命名为point. 5.把tough_place的颜色设置为透明 二.代码编写 创建脚本命名为PEListener,并引入相关接口,并进行封装. using System; u

  • 老生常谈C语言静态函数库的制作和使用

    C语言的函数库是多组经过验证的常用函数的集合,编写C语言程序时使用库函数,既可以提高程序运行效率,又可以提高编程质量,使用方法如#include 和#include. 根据使用库函数时,函数库加载时机的差异,将函数库分为静态函数库和动态函数库,具体差异是:C语言程序如果使用静态函数库的函数,那么整个函数库的代码都会和C语言程序一起编译成可执行代码,程序的体积会膨胀:如果使用动态函数库的函数,则C语言程序只会和函数库文件名以及函数名一起编译成可执行代码(不编译函数代码),运行时去查找函数库文件和函

  • 易语言图片格式转换器制作方法

    图片格式转换器工具相当的多,实用性也是相当的强,除了软件能够转换,在线也能转换,没有想过自己制作一个这样的软件呢,现在就用易言语来制作一个简单的图片格式转换器,支持批量转换功能.拖入功能! 1.废话不多说了,先来做界面,这里用到通用对话框,拖放对象组件,图片列表采表框,预览图片采用画板,转换进度用了一个进度条,其他就是一些按钮.编辑框.组合框.还有一些标签,不怎么美观,也将就着用! 2.这里为了操作列表框,添加一个菜单,主要是删除列表框的内容,包括全部删除和删除选中,这个菜单就不用显示了,将其设

  • 易语言查找文本的制作教学

    易语言寻找文本,这个命令,对于制作搜索软件很有用,我教大家操作. 1.易语言新建一个windows窗口 点击进入代码编辑区 具体看如何用易语言编写自己第一个程序? 2.我们输入这个命令 寻找文件 (, ) 3.展开这个命令 发现这个命令有2个参数 4.第一个参数就是寻找的文件名或者目录,我们输入"C:\Users\Administrator.000\Desktop\*.*" 第二个参数就是文件属性,我们可以省略 5.我们运用调试输出这个函数 具体看易语言调试输出函数实例详解 输入调试输

随机推荐