unity3d实现第一人称射击游戏之CS反恐精英(四)(子弹模块,音效特效)
实现思想
由于子弹的速度非常快,直接让子弹像现实中那样移动很容易发生’穿模‘现象,所以我们用unity中的射线来实现,当用户点击鼠标左键的时候,播放开枪动画,火花特效,开火音效,枪口发射一条射线,检测到碰撞器后再根据物体上的位置添加特效贴图。如果是敌人就根据位置去减血(因为网络模块还没有做,这一块后面来实现)
整理下流程图 ,黑色现在不实现
下面开始具体实现
再gun下面添加脚本 Shoot
编辑脚本
void Update(){if( Input.GetButtonDown("Fire1")){//开枪动画//火花特效//发射射线//判断是否击中//判断是否击中敌人//子弹弹痕贴图}}
Input.GetButtonDown("Fire1")是unity自带的鼠标左键事件
第一步 开枪动画
先创建动画控制器,双击打开
其中灰色的是导入枪模型自带的开火动画,但是默认是三连发的,黄色的是自己录制的枪闲置的动画,什么也不做
添加bool参数Shoot控制开枪状态(不懂动画的同学请百度下吧)
然后去编辑脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
///
///</summary>
public class Shoot : MonoBehaviour
{//动画控制器private Animator animator;[SerializeField]//弹痕private GameObject bulletTextcute;[SerializeField]//枪口private Transform FirePoint;//开枪动画时间private float timer;//开枪音效[SerializeField]private AudioSource ShootAudio;//开枪火花例子特效[SerializeField]private GameObject firePointParticle;// Start is called before the first frame updatevoid Start(){animator = transform.Find("Model").GetComponent<Animator>();}// Update is called once per framevoid Update(){if (Input.GetMouseButtonDown(0)){//设置开枪间隔时间是0.1秒if (Time.time - timer > 0.1){//开枪音效ShootAudio.Play();//开枪动画animator.SetBool("Shoot", true);timer = Time.time;//火花特效GameObject filego= GameObject.Instantiate(firePointParticle, FirePoint);filego.GetComponent<ParticleSystem>().Play();//发射射线RaycastHit hit;//判断是否击中if (Physics.Raycast(FirePoint.position, -FirePoint.right, out hit, 200)){//子弹弹痕贴图GameObject go = GameObject.Instantiate(bulletTextcute, hit.point + 0.01f * hit.normal, Quaternion.Euler(Vector3.zero));//注视旋转go.transform.LookAt(hit.point + hit.normal);}}else {animator.SetBool("Shoot", false);}}else{animator.SetBool("Shoot", false);}}}
关于音效和弹痕贴图都是百度下载并且再ps上扣图的,有一需要注意再弹痕贴图材质的 Rendering Mode 不能选择 Opaque否则图就白扣了,坑了我半个小时。
上面代码我只讲解下弹痕贴图生成的位置,我们需要弹痕贴在墙上,通过射线结果hit可以获取射中的世界坐标和相对于击中点的法线坐标,所以实例化弹痕贴图旋转的时候需要注意是point+nomal,网上还有另外一种修改墙壁的图片像素去实现的,感兴趣的同学可以自己了解下。
需要补充的是 在弹痕贴图和火花特效 我都是放在了预制件中拖拽到变量里面的,并且两个都需要挂载定时删除的脚本,弹痕贴图是2秒消除,火花是0.1秒消除,火花特效在导入枪的时候附加的有,并且开枪动画也有,下面看下截图
最后我把弹痕的扣图上传上来,
这篇文章可能讲解的并不像前几篇那么细,希望读者自己 去学习下动画系统,声音,粒子系统这些比较死的东西,这些学习资料很多,然后需要你自己去拼凑起来,不要担心自己拼凑的对不对是不是这样拼凑的,只要你能实现功能就OK。
unity3d实现第一人称射击游戏之CS反恐精英(四)(子弹模块,音效特效)相关推荐
- unity3d实现第一人称射击游戏之CS反恐精英(二)(人物的移动和场景的碰撞关系)
上一节我们简单的实现了第一人称的移动,但是只是让枪有了漫游的效果,本章来实现它的物理效果. 1 先给枪添加一个碰撞器组件,为了简单我们添加一个box collider来模拟碰撞 调整下碰撞器大小,将它 ...
- unity3d实现第一人称射击游戏之CS反恐精英(一)(第一人称移动)
学习unity有一段时间了,自己准备做一个cs的项目来巩固并且提升自己. 第一步:搭建场景 因为这个游戏只针对游戏逻辑为重点,所以搭建场景和人物素材我都从unity asset store中的免费资源 ...
- unity3d实现第一人称射击游戏之CS反恐精英(六)(朝准星位置发射子弹,更换弹夹 )
上一节将UI简单的布置了一下,下面来实现UI中当前子弹数和总子弹数和脚本的数据绑定,并且发射子弹要朝着准星的位置发射 1:子弹和显示UI的子弹数的实现思路:在枪攻击的脚本里添加当前子弹数和背包子弹数两 ...
- unity3d实现第一人称射击游戏之CS反恐精英(三)(人物旋转限制和跳跃功能(消除连跳,碰撞消除,高度稳定))
1旋转限制 上文实现的代码,我们的人物可以后空翻和前空翻,这不是我们想要的,所以我们需要对视角进行限定. 先分析一下,人物抬头不能让他超过某个角度,也就是抬头的时候我们人物的z轴和世界的y轴的夹角不能 ...
- unity3d实现第一人称射击游戏之CS反恐精英(五)(第一视角UI搭建,血量,金钱,子弹,准心,倒计时)
这一节内容比较简单,就是构建UI在摄像机屏幕上,让玩家可以看到人物的状态,血量,防弹衣,倒计时,金钱,子弹,准心 下面看一下效果图 最终效果是这样的,所有的布局全是用UGUI的TEXT组件添加的,需要 ...
- Unity3D FPS Game:第一人称射击游戏(一)
耗时一周制作的第一人称射击游戏,希望能帮助到大家! 由于代码较多,分为三篇展示,感兴趣的朋友们可以点击查看! Unity3D FPS Game:第一人称射击游戏(一) Unity3D FPS Game ...
- Unity3D FPS Game:第一人称射击游戏(二)
耗时一周制作的第一人称射击游戏,希望能帮助到大家! 由于代码较多,分为三篇展示,感兴趣的朋友们可以点击查看! Unity3D FPS Game:第一人称射击游戏(一) Unity3D FPS Game ...
- Unity3D FPS Game:第一人称射击游戏(三)
耗时一周制作的第一人称射击游戏,希望能帮助到大家! 由于代码较多,分为三篇展示,感兴趣的朋友们可以点击查看! Unity3D FPS Game:第一人称射击游戏(一) Unity3D FPS Game ...
- unity3D第一人称射击游戏(推荐)
unity3d第一人称射击游戏(推荐) 第一部分:简介 这个教程中,我们详细了解下如何制作一个简单的第一人称射击游戏(FPS).其中将介绍一些基本的3D游戏编程的概念和一些关于怎样如游戏程序员般思 ...
最新文章
- mybatis3:Invalid bound statement (not found)
- 用Ext 2.0 combobox 做的省份和城市联动选择框
- 北京招聘 | 新浪微博机器学习部门招聘推荐算法开发实习生
- Python OpenCV——函数 cv2.findContours 运行错误【in function ‘cv::pointSetBoundingRect‘】解决方案
- STM32工作笔记0094---音乐播放器实验
- 【MFC开发(2)】新建一个对话框MFC项目(vs2013)
- 安装Matlab2016a中文破解版教程
- UG软件使用10大技巧,将会大大提升工作效率
- 详解无刷直流电机的工作原理
- 最近在上海浦东新区的租房经历
- 三大措施助力新华三NGFW争当市场排头兵
- 华为nova6计算机历史在哪可以看,写在华为nova6发布前:一文看出nova手机使用芯片的变迁历程...
- 11.深入浅出:深度负反馈及放大倍数——参考《模拟电子技术基础》清华大学华成英主讲
- linux查看usb设备文件,4 种方法识别Linux系统 USB 设备
- 基于神经网络和小波变换的癫痫脑电诊断比较
- win7下安装svn服务器端及客户端详细步骤
- 新概念二册 lesson 4 现在完成时
- java开发台球的图片_Java模拟桌球打击处理及绘制
- 华为最新鸿蒙消息,华为鸿蒙系统最新消息,华为鸿蒙系统2021
- DIY孔明锁(6根)自制鲁班锁