射击是FPS游戏中最重要的一环,如果实现一个简单的射击效果呢,来跟我一起学习一下吧

射击元素:

  • 枪口
    枪口决定了一个子弹初始时的位置和方向,可以使用一个空物体来代替,放置在射出子弹的位置,
  • 子弹
    射击肯定需要子弹才能够完成整个射击的过程,在游戏设置时可以将子弹设为预制体

子弹:

  • 子弹的几个特殊的地方,首先就是速度比较高,这个时候对于碰撞检测的方式就很重要了,要选择连续动态检测,这样才不会出现正好穿过检测间隔没有触发碰撞检测的情况(也可以使用射线检测)。然后子弹有穿透性,所以要根据实际情况勾选Is Trigger。最后保证子弹上面有刚体组件,模拟物理特性的同时,也可以使用velocity为其赋予速度

实现过程:

首先在脚本中获取枪口的位置,在该位置用Instantiate实例化一个子弹,并且方向与枪口方向保持一致
接下来要给子弹一个初速度,使其能够被射击出去。首先确保复制的子弹有刚体组件,然后通过velocity为其赋予速度:

Velocity:

  • 注意使用velocity给与一个刚体速度时,速度方向使用的是世界坐标,所以在本例子中,需要将枪口的本地坐标转换为世界坐标,转换的函数为:transform.TransformDirection()

所以实现射击操作的代码为:

     public Transform muzzle;   //枪口public Rigidbody bullet;  //子弹预制体private float speed = 800f;//子弹初速度// Update is called once per framevoid Update(){Rigidbody bulletCopy = (Rigidbody)Instantiate(bullet, muzzle.position, muzzle.rotation);bulletCopy.velocity = bulletCopy.transform.TransformDirection(Vector3.forward * speed);}

Unity 子弹的射击效果相关推荐

  1. Unity——子弹跟踪

    Unity--子弹跟踪 在射击类游戏中,会经常遇到需要子弹自动跟踪的功能需求,考虑用简单的方法,实现一个子弹自动跟踪的效果. 重点实现逻辑功能,对于子弹的发射器的prefabs的设计不重点考虑,只使用 ...

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

    Ruby's Adventrue游戏制作笔记(十六)Unity子弹数量及其UI 前言 一.创建新的UI 二.编辑脚本 三.创建获得子弹的道具 系列链接 前言 本文章是我学习Unity官方项目项目所做笔 ...

  3. Unity 子弹射击算法

    主要参考链接中的博主 其实最为关键的就是LookAt这个方法,让子弹看向屏幕中心点检测到的位置 参考链接地址 https://assetstore.unity.com/packages/essenti ...

  4. Ruby‘s Adventrue游戏制作笔记(十一)Unity角色攻击——发射子弹

    Ruby's Adventrue游戏制作笔记(十一)Unity角色攻击--发射子弹 前言 一.编辑子弹 二.创建脚本 三.修改玩家攻击脚本 四.将子弹拖入玩家脚本 五.让子弹碰撞到该碰撞的东西 六.编 ...

  5. Ruby‘s Adventrue游戏制作笔记(十四)Unity播放游戏音效

    Ruby's Adventrue游戏制作笔记(十四)Unity播放游戏音效 前言 一.创建背景音乐 二.创建新的脚本 三.在其他需要播放的所有脚本中进行操作 四.给敌人添加音效 五.给玩家添加移动音效 ...

  6. Ruby‘s Adventrue游戏制作笔记(十二)Unity给角色添加简单的特效

    Ruby's Adventrue游戏制作笔记(十二)Unity给角色添加简单的特效 前言 一.把特效物品进行切割 二.创建 particle System 三.创建彩色球 四.再设置一下其他属性 五. ...

  7. Ruby‘s Adventrue游戏制作笔记(十)Unity添加动画

    Ruby's Adventrue游戏制作笔记(十)Unity添加动画 前言 一.给食物添加动画 二.给敌人添加动画 三.添加玩家动画 四.设置触发动画的脚本 系列链接 前言 本文章是我学习Unity官 ...

  8. Ruby‘s Adventrue游戏制作笔记(四)Unity绘制其他元素

    Ruby's Adventrue游戏制作笔记(四)Unity绘制其他元素 前言 一.修改地图层级,将Order in Layer 提高到-10 二.创建Prefabs 三.调整人物在其他元素的位置 四 ...

  9. Ruby‘s Adventrue游戏制作笔记(十七)Unity添加游戏胜利条件和失败条件和导出游戏

    Ruby's Adventrue游戏制作笔记(十七)Unity添加游戏胜利条件和失败条件和导出游戏 前言 一.添加两个相应的UI 二.导出游戏 系列链接 源代码和素材及游戏程序 前言 本文章是我学习U ...

最新文章

  1. 自定义AlertDialog布局
  2. 别再Prompt了!谷歌提出tuning新方法,强力释放GPT-3潜力!
  3. kdump需要开启吗_iPhone全新黑科技!用嘴玩手机!你会玩吗?
  4. 2019厦门大学信息学院人工智能/智能科学与技术系夏令营(非计算机系)
  5. Mysql允许root用户远程访问
  6. 基于Java的愤怒的小鸟游戏的设计与实现
  7. 4款微信公众号编辑器,哪个最好用?
  8. 4G工业路由器要点介绍
  9. CSS3动画实现牛顿摆
  10. RobotStudio 项目移植问题——无法创建系统
  11. 动态表情与超链接制作
  12. 笔记本计算机待机后显示器,笔记本电脑休眠后一直黑屏怎么回事_笔记本休眠后屏幕一直黑屏无法唤醒如何解决-win7之家...
  13. aws没有免费套餐服务数据可用
  14. Centos 安装zlib
  15. 利用python爆破mysql数据库
  16. Excel如何快速预览查看图片?
  17. mysql 安时间查询格式_安装MySQL慢查询日志工具Anemometer
  18. 微型计算机课设电梯控制8255,东南大学吴健雄学微机课程设计电梯控制器.doc
  19. 利用Visio转换成pdf图形时的注意事项
  20. ARMA 时间序列模型

热门文章

  1. LINUX系统子系统DEMON,【linux】led子系统
  2. 计算机进入休眠状态后,电脑进入休眠状态后自动重启怎么办
  3. 【NI Multisim 14.0编辑环境——菜单栏】
  4. 苹果cms模板_苹果cmsv10对seo友好模板有哪些?
  5. 使用java.io.File操作文件及文件夹
  6. Nowa Flutter开发教程之 02 添加图像 和 添加自定义字体 (无代码开发教程)
  7. 电脑屏幕分辨率怎么调?电脑屏幕修改分辨率SwitchResX
  8. 基于python的城市旅游数据采集分析系统
  9. 报表模板哪里有?在线报表系统可以下载
  10. 浅谈霍尔电流传感器在数据中心直流列头柜里的运用