Unity游戏中近战攻击判定检测

您所在的位置:网站首页 unity发射炮弹简单 Unity游戏中近战攻击判定检测

Unity游戏中近战攻击判定检测

2023-03-13 22:12| 来源: 网络整理| 查看: 265

出现的问题

如果在武器上使用碰撞盒,使用ontriggerenter 的方式触发击中的话, 在有些攻击动作,帧与帧之间的动作太大,会导致触发失效,如下图 26-27帧之间的动作幅度很大.

虽然我们可以增大碰撞盒子,但这不是一定有效的方案

 

解决方案

采用射线检测的方式

攻击时,保存射线点这一帧的位置,然后在下一帧时,从上一帧发出射线到当前这一帧.

 代码:

public class WeaponRayTest : MonoBehaviour{/** * 近战攻击射线检测* */ public Transform pointA;public Transform pointB; public LayerMask layer; int hitCount; public Transform[] Points; //射线发射点public Dictionary dic_lastPoints = new Dictionary(); //存放上个位置信息public GameObject particle;//粒子效果private void Start(){ if (dic_lastPoints.Count == 0){for (int i = 0; i }

武器绑定:

 这里每个点都对应射线发出的位置

运行效果:

运行效果图time.scale 为0.25 ,所以看上去检测射线密集.

红线:代表的武器位置,每个每个节点就是射线点的位置

蓝线:代表射线发出的位置,如果期间有检测到对象,视为击中.

 参考:【UE4】游戏中近战攻击判定检测(一)——射线检测!_WadaFak的博客-CSDN博客_ue4攻击判定

射线参考:Unity - 射线检测 - SouthBegonia - 博客园 (cnblogs.com)

性能参考:Unity中各类物理投射性能横向比较 - HONT - 博客园 (cnblogs.com)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3