Unity3D 设计一个简单的射击效果

Unity3D 设计一个简单的射击效果

首页休闲益智射击距离3D更新时间:2024-05-09

简单说明: 本文简单介绍了射击系统的基本原理,并上传了源码到git仓库:https://gitee.com/jeady5/unity3dSample,其中还有演示视频,有需要的可以自取,如有帮助,记得三连...

Unity3D 逐步设计一个射击系统一、概述

本文要实现的只是一个简单的射击模拟效果,提供一个简单思路。

整体思路分为下列几个过程:

文章最后也放着相匹配的制作视频,不喜欢看文字的朋友可以直接跳转。

二、流程分析
  1. 生成炮弹
    该流程使用到的是动态创建物体的流程。
  2. 射出炮弹
    有关物体位置和角度的问题,该流程使用到的肯定是一些相关的transform属性和方法。
    如 炮筒位置属性,炮筒的瞄准方向,炮弹的移动等。
  3. 自我销毁
    自我销毁就用到Destroy方法,传入要销毁的游戏对象即可。
    关于销毁时间可以通过在update周期方法中对Time.deltaTime进行累加来判断多少秒后进行销毁。
  4. 击中目标 对击中目标的判断,本文假想的是停止作用较小的贯穿效果,所以选用的是碰撞体触发的方式来检测是否击中目标。

你也可以采取碰撞的方式来模拟目标受击后短距离的击退效果。

  1. 中弹现场
    这个就比较简单了,只要在获得了击中位置后,在此位置上放置一个模拟效果的物体即可。
三、知识点解读
  1. Instantial —— 动态生成物体
    该方法实现了将传入的物体对象参数复制一个出来。 这样的话,我们就只需要得到那个对象的实例就可以了。比如:
  1. transform.Translate —— 相对移动
    该方法实现的是对象的相对移动。如:炮弹的移动
  2. Destroy —— 销毁目标对象
    销毁传入的任何对象(游戏对象/组件)
  3. OnTriggerEnter —— 检测碰撞体触发。
    只需要在MonoBehaviour的派生类中实现该方法即可自动调用。 原型为: void OnTriggerEnter(Collider other)
  4. Collider.ClosedPoint —— 获取碰撞体上的点。
    该方法用于获取在碰撞体上距离给定点最近的点的坐标。
四、注意事项
  1. 在使用Translate方法进行移动时,要注意参数是相对移动的距离和方向信息
  2. 在使用Translate方法进行移动时,要注意给定偏移参数是世界坐标还是本地坐标,注意转换
  3. 使用碰撞体触发时,注意触发发生的条件: 不能两个都是静态碰撞体且其中一个是触发碰撞体。
  4. 在使用到forward、right等内置的世界坐标属性时,要记得检查物体的本地轴方向而非世界坐标轴方向
武、最后

本文只是从原理上说明了基本实现,并没有在特效上深入。

分享不易,记得三连,感谢~

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved