unity3d碰撞检测之立方体碰撞算法

本文主要探讨在游戏开发中,特别是在需要考虑Y轴的场景下,如何进行立方体碰撞检测。通过分析立方体的8个顶点坐标和检测点坐标,将怪物坐标转换到新的坐标原点,然后比较新坐标下的立方体尺寸,从而实现碰撞检测。文章提供了详细的步骤和原创代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         相信很多做游戏的开发人员都会面临 物体碰撞检测的问题  一般的手游不需要考虑Y轴 只需要用到简单的 点与面的位置关系 即1点在面内 2 点在面外或则点与线的位置关系1 点在线上 2点在线外,假如要做类似天涯明月刀的端游 人物可能会跳到房子上 这时候你需要考虑到Y轴 那么点与面的位置关系就不满足碰撞需求了 我们这时候就需要用圆柱体碰撞 或则 立方体碰撞了 这里我要讲解的就是立方体碰撞检测的算法

         首先做立方体碰撞检测算法需要哪些条件呢 1 立方体的8个顶点坐标 2 要检测的点坐标

         假如我要做一个英雄普通攻击碰撞 我可以得到英雄的三维坐标 知道英雄的坐标,立方体的8个顶点坐标也随即可以得出了 怪物坐标自然也是已知的 分析到这里 接下来就是实现算法了

         知道了立方体的8个顶点坐标 和怪物坐标

         我们以立方体其中一个顶点作为坐标原点,过原点其中两个顶点分别在另两条坐标轴上 即立方体3个顶点分别在3条轴上 然后将怪物变换位置从世界坐标到坐标原点为Point1  这个时候以新坐标原点立方体的长宽高也形成了一个新的坐标Point2 最后分别比较Point1和Point2, x、y、z即可得出结果 文字分析结束下面上代码

#region 立方体碰撞

    /// <summary>
    /// 立方体碰撞(主角朝向 可对空)使用函数
    /// </summary>
    /// <param name="transform">当前对象</param>
    /// <param name="Point">敌人坐标</param>
    /// <param name="width">立方体宽度</param>
    /// <param name="distance">立方体长度</param>
    /// <param name="hight">立方体高度</param>
    /// <param name="JuLi">当前对象离脚底的距离</param>
    /// <returns>是否在立方体内</returns>
    public static bool Cubecollision(ref Transform Cude, Transform transform, Vector3 Point, float width, float distance, float hight, float JuLi)
    {
        //得出立方体的8个顶点坐标
        Quaternion r = transform.rotation;
        Vector3 DownLeftback = (transform.position + (r * Vector3.left) * width + (r * Vector3.down) * JuLi);
       
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值