碰撞

From DDraceNetwork
Revision as of 02:30, 16 March 2023 by FightFire (talk | contribs) (Created page with "* 冻结激光的情况较为复杂。我们假定一束冻结激光垂直向上发射,发射点位于底部:(这束激光由最顶部的冻结激光,中间两格网格高的冻结激光,和最底部的光束光源组成。)")
此条目仍需进行内容补充,您可以帮助我们编辑和修订以扩充其内容。

碰撞是一种地图中会发生在玩家与实体、玩家或拋射物之间的交互效果。

介绍碰撞前,我们需要理解单位长度的概念。

想象一下,每一格网格都是由许多最小的正方形单元构成的,我们称这种最小的正方形单元为单位长度。

每一个单位长度都代表着可以一个玩家在任何一个给定的时间里占据的一个单一的、独一无二的位置。每一个单位长度都可能代表一个玩家的中心位置。

  • 一格网格在地图中的大小为一个32*32个单位长度的正方形,这表明一名玩家可以在一格网格中占据1024个独一无二的位置。

实体碰撞

不同的实体拥有不同的碰撞箱体积。

相对于玩家的中心位置:

    • 多数标准DDRace实体(多数实体都是DDRace模式独有的,例如冻结区域和传送区域)的碰撞体积为32*32个单位长度的正方形区域;
    • 死亡区域的碰撞体积为50*50个单位长度的正方形区域;
    • 墙体实体(包括可钩墙体,禁钩墙体和钩穿墙体)的碰撞体积为60*60个单位长度的正方形区域;
    • 冻结激光的情况较为复杂。我们假定一束冻结激光垂直向上发射,发射点位于底部:(这束激光由最顶部的冻结激光,中间两格网格高的冻结激光,和最底部的光束光源组成。)
        • 对于左右两侧,冻结的判定区域为从中心开始,向左右各延伸28个单位长度;
        • 对于顶部,冻结的判定区域为从中心开始,半径为27个单位长度的圆形区域;
        • 对于底部,冻结的判定区域是从中心开始,向下延伸28个单位长度的区域。
    • 单向板的情况会更加复杂一些。请注意——由于单向板容易被穿过,因此在拥有足够大的速度去穿过单向板的情况下讨论单向板的碰撞体积没有多大的意义:
        • 单向板(假定向上)的判定区域为从中心开始,向上延伸34个单位长度的距离,向左、向右和向下延伸16个单位长度的距离,当玩家与之发生碰撞时,单向板会阻止玩家向与箭头相反的方向移动;
        • 双向板(假定向上和向下)的判定区域为从中心开始,向上和向下延伸34个单位长度的距离,向左和向右延伸16个单位长度的距离,当玩家与之发生碰撞时,双向板会阻止玩家向着双向板的方向移动;
        • 全向板的判定区域是从中心开始,向四个正方向分别延伸34个单位长度,当玩家与之发生碰撞时,全向版会阻止玩家向着全向版内部的方向移动。额外需要注意的是,全向版碰撞箱的形状更类似于符号“+”,而非一个正方形。
        • 玩家可以用 武士刀来穿过单向板
    • 激光门的判定方式与单向板相同,因此也可以用足够大的速度去穿过。

玩家碰撞

Tee的碰撞体积为一个直径为28个单位长度的圆,但实际上当两个玩家的中心距离为35个单位长度时就已经发生了交互。

玩家之间发生碰撞后,玩家会获得与碰撞作用点相反方向的速度,获得的速度大小取决于玩家之间发生碰撞时的中心距离(发生碰撞时,中心距离越远,获得的速度越小)以及发生碰撞时的角度(当碰撞的方向与两名玩家的中心连线重合时,可以获得最大的速度)。

玩家拥有的钩索强弱等级也会影响到碰撞速度。拥有强钩的玩家发生碰撞时会稍微多产生一点速度。


拋射物碰撞

待办: Add hitboxes for a grenade