当前位置: 首页 > news >正文

unity实现2D人物从上面踩踏敌人,敌人减血的简易方法(类似马里奥的攻击手段)

这个问题很多小白一查AI,发现实现很复杂。其实有个最简单的办法,当然这个肯定没有复杂的精确,但是也很直白和好理解。

方法就是在敌人头顶部分放一个碰撞体,然后勾选触发器,然后脚本直接检测玩家是否碰到这个触发器即可。


如果想要更精确的,可以通过 碰撞接触点的相对位置,判断玩家的 Y 坐标(垂直方向)是否在敌人之上

具体来说就是

  • 获取碰撞发生时,玩家与敌人接触点或相对位置
  • 判断 玩家的底部(或中心点的 Y)是否高于敌人的顶部(或中心点的 Y),即玩家在敌人上方。

这样就能确保玩家是踩在敌人的头上。


我查了AI,发现上面的还不是最精确的,更精确的方案是(使用 OnCollisionEnter + Contact Points,非 Trigger)

如果你 不想用 isTrigger,而是用物理碰撞,可以这样写(也是 3D 示例):

private void OnCollisionEnter(Collision collision)
{if (collision.gameObject.CompareTag("Player")){// 遍历所有接触点foreach (ContactPoint contact in collision.contacts){// 判断接触点的法线方向 —— 如果法线朝上(即玩家是从上方压下来的)if (contact.normal.y > 0.5f) // 法线的 Y 分量较大,说明是从上方接触{TakeDamage(10);return;}}}
}

🔍 解释:

  • contact.normal 是碰撞点处的表面法线,指向 碰撞体的外部
  • 当玩家从上方踩敌人时,法线的 Y 分量通常是 正且比较大(比如 > 0.5 或 0.7),表示接触面是“从上往下的”。
  • 这种方法更物理、更准确,推荐使用!

 总结推荐方案

方式是否用 Trigger推荐度特点
OnTriggerEnter + 法线 / Bounds 判断✅ 是⭐⭐⭐⭐简单常用,适合大多数 3D 踩踏需求,推荐使用 contact.normal 判断方向
OnCollisionEnter + 检查法线方向❌ 否⭐⭐⭐⭐⭐最准确,通过物理碰撞的法线判断玩家是否从上方踩踏,推荐!
OnTriggerEnter + Y 坐标比较✅ 是⭐⭐⭐简单但不够精确,适合快速原型

🧪 如果你想要一个最靠谱的踩踏检测(推荐这样做):

👉 使用 OnCollisionEnter(不开启 isTrigger),然后通过 collision.contacts[0].normal.y > 0.5f 来判断是否从上方踩中。

示例(3D,推荐):

private void OnCollisionEnter(Collision collision)
{if (collision.gameObject.CompareTag("Player")){ContactPoint contact = collision.contacts[0];if (contact.normal.y > 0.5f) // 从上方踩下来{// 扣血逻辑TakeDamage(10);}}
}

http://www.dtcms.com/a/528920.html

相关文章:

  • Spring AI 1.0 核心功能脉络
  • 【清除 Mac DNS 缓存】Mac 电脑能访问外网却无法加载特定页面?你的 DNS 缓存“发霉”了!
  • 局域网手机/平板无数据线传输文件-通过网络传输LocalSend
  • 网站开发时ie11的兼容网站开发的prd 怎么写
  • 电分:无功、有功,功率因数
  • Spring Bean作用域全解析
  • 网页制作与网站建设wordpress插件库
  • 【参赛心得】HarmonyOS创新赛获奖秘籍:如何用Stage模型和声明式UI打造高分作品
  • 我的班级网站模板糖果屋网站建设策划书
  • 【开题答辩实录分享】以《幼儿园信息管理系统设计与开发》为例进行答辩实录分享
  • C++ STL简介:从原理到入门使用指南
  • 青州网站建设公司页游平台排行榜
  • 哪些网站可以做设计软件重庆知名商城网站建设公司
  • 做预算查价格的网站是哪个好深圳做网站哪里好
  • 权重初始化方法详解
  • 三门峡建设环境局网站点击立即进入正能量网站
  • 北京哪里有做网站的咨询网站 模板
  • 自制leetcode计算题
  • dz可以做视频网站吗网站重新解析
  • 网站建设技术网站建网站策划方案
  • 犀牛云网站建设淘气堡网站建设
  • 技术无罪,人心有善恶
  • python学习之进程池
  • CS Representation and operation of data
  • 【C++闯关笔记】map与set的使用
  • 线性代数 · 伪逆矩阵 | 定义、求法、性质及应用
  • 网站用图片一个域名绑定多个网站
  • php网站开发能挣多钱网站建设与管理 ppt
  • 05R语言基础操作
  • StarRocks 集群安装部署文档