实现思想

由于子弹的速度非常快,直接让子弹像现实中那样移动很容易发生’穿模‘现象,所以我们用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反恐精英(四)(子弹模块,音效特效)相关推荐

  1. unity3d实现第一人称射击游戏之CS反恐精英(二)(人物的移动和场景的碰撞关系)

    上一节我们简单的实现了第一人称的移动,但是只是让枪有了漫游的效果,本章来实现它的物理效果. 1 先给枪添加一个碰撞器组件,为了简单我们添加一个box collider来模拟碰撞 调整下碰撞器大小,将它 ...

  2. unity3d实现第一人称射击游戏之CS反恐精英(一)(第一人称移动)

    学习unity有一段时间了,自己准备做一个cs的项目来巩固并且提升自己. 第一步:搭建场景 因为这个游戏只针对游戏逻辑为重点,所以搭建场景和人物素材我都从unity asset store中的免费资源 ...

  3. unity3d实现第一人称射击游戏之CS反恐精英(六)(朝准星位置发射子弹,更换弹夹 )

    上一节将UI简单的布置了一下,下面来实现UI中当前子弹数和总子弹数和脚本的数据绑定,并且发射子弹要朝着准星的位置发射 1:子弹和显示UI的子弹数的实现思路:在枪攻击的脚本里添加当前子弹数和背包子弹数两 ...

  4. unity3d实现第一人称射击游戏之CS反恐精英(三)(人物旋转限制和跳跃功能(消除连跳,碰撞消除,高度稳定))

    1旋转限制 上文实现的代码,我们的人物可以后空翻和前空翻,这不是我们想要的,所以我们需要对视角进行限定. 先分析一下,人物抬头不能让他超过某个角度,也就是抬头的时候我们人物的z轴和世界的y轴的夹角不能 ...

  5. unity3d实现第一人称射击游戏之CS反恐精英(五)(第一视角UI搭建,血量,金钱,子弹,准心,倒计时)

    这一节内容比较简单,就是构建UI在摄像机屏幕上,让玩家可以看到人物的状态,血量,防弹衣,倒计时,金钱,子弹,准心 下面看一下效果图 最终效果是这样的,所有的布局全是用UGUI的TEXT组件添加的,需要 ...

  6. Unity3D FPS Game:第一人称射击游戏(一)

    耗时一周制作的第一人称射击游戏,希望能帮助到大家! 由于代码较多,分为三篇展示,感兴趣的朋友们可以点击查看! Unity3D FPS Game:第一人称射击游戏(一) Unity3D FPS Game ...

  7. Unity3D FPS Game:第一人称射击游戏(二)

    耗时一周制作的第一人称射击游戏,希望能帮助到大家! 由于代码较多,分为三篇展示,感兴趣的朋友们可以点击查看! Unity3D FPS Game:第一人称射击游戏(一) Unity3D FPS Game ...

  8. Unity3D FPS Game:第一人称射击游戏(三)

    耗时一周制作的第一人称射击游戏,希望能帮助到大家! 由于代码较多,分为三篇展示,感兴趣的朋友们可以点击查看! Unity3D FPS Game:第一人称射击游戏(一) Unity3D FPS Game ...

  9. unity3D第一人称射击游戏(推荐)

    unity3d第一人称射击游戏(推荐) 第一部分:简介   这个教程中,我们详细了解下如何制作一个简单的第一人称射击游戏(FPS).其中将介绍一些基本的3D游戏编程的概念和一些关于怎样如游戏程序员般思 ...

最新文章

  1. mybatis3:Invalid bound statement (not found)
  2. 用Ext 2.0 combobox 做的省份和城市联动选择框
  3. 北京招聘 | 新浪微博机器学习部门招聘推荐算法开发实习生
  4. Python OpenCV——函数 cv2.findContours 运行错误【in function ‘cv::pointSetBoundingRect‘】解决方案
  5. STM32工作笔记0094---音乐播放器实验
  6. 【MFC开发(2)】新建一个对话框MFC项目(vs2013)
  7. 安装Matlab2016a中文破解版教程
  8. UG软件使用10大技巧,将会大大提升工作效率
  9. 详解无刷直流电机的工作原理
  10. 最近在上海浦东新区的租房经历
  11. 三大措施助力新华三NGFW争当市场排头兵
  12. 华为nova6计算机历史在哪可以看,写在华为nova6发布前:一文看出nova手机使用芯片的变迁历程...
  13. 11.深入浅出:深度负反馈及放大倍数——参考《模拟电子技术基础》清华大学华成英主讲
  14. linux查看usb设备文件,4 种方法识别Linux系统 USB 设备
  15. 基于神经网络和小波变换的癫痫脑电诊断比较
  16. win7下安装svn服务器端及客户端详细步骤
  17. 新概念二册 lesson 4 现在完成时
  18. java开发台球的图片_Java模拟桌球打击处理及绘制
  19. 华为最新鸿蒙消息,华为鸿蒙系统最新消息,华为鸿蒙系统2021
  20. DIY孔明锁(6根)自制鲁班锁

热门文章

  1. 【总结】网站性能分析-前台优化
  2. 当try_files遇上gateway是如何产生火花的
  3. 有趣的23000----整理(12)P词根
  4. 单片机音频节奏灯_如何用单片机做出用音乐节奏来控制LED灯?
  5. 在Android下创建文件夹
  6. Linux对应的英文全称
  7. 域名dns 域名dns解析查询
  8. apicloud图片缓存的使用和查看清除缓存
  9. WOS(SCI)爬虫案例
  10. 基于JAVA信贷管理系统计算机毕业设计源码+系统+数据库+lw文档+部署