热度 5|
我之前就提到过,骑砍凡是一切模型资源关联的模块都可以看作是对一个模型的场景基础功能在引擎里加以功能延伸或限定来分化出troop(人)、item(武器衣物生活用品)、horse(马)、sceneprop(场景物)、particle(特效粒子)、mesh(界面模型)这些模块。
第一期我讲讲item武器类型的物品和sceneprop场景物类型的物品的引擎层面的联系。通过试验可以发现,当一个人中箭的时候,对这个人或身上的箭进行任何移动类代码控制都不会使得箭离开插入人体的相对位置,而如果箭击中的是场景物类型的物品,对场景物进行移动类代码控制,就会发现箭停留在原来的位置哪怕悬空。
接下来不得不提到骑砍mod系统的一种命令,就是propattach命令,用于将场景物与人体某个相对位置永远绑定且过程不可逆,也就是不能解除绑定,而且被绑定后就会使这个场景物不再适用于移动类命令,这种现象就像人被箭和标枪射中时的状态一样,而mod系统允许我们获取攻击击打目标的坐标和身体hitbox点的坐标,所以其实这种中箭的过程完全可以用场景物模拟出来(但是肯定没有引擎对这方面的优化好)。至于引擎为什么要这么设定,很简单,你被射了箭乱动后箭离开身上悬空在原地不是很僵?
而场景物被射中箭移动场景物后箭会悬空在原处是因为,场景物的移动类代码控制和人的移动类代码控制不一样,首先人的移动一般只有xy轴(z坐标会自动变成距离地面最高碰撞点上,这也就是人物飞行在骑砍一直不太好做或做出来很僵的原因)并且还受到地面坡度改变ai的相关反应不按线性移动,而场景物是在三维空间你让他怎么移动就怎么移动,单纯命令它移到半空也不会落地。所以射中箭的场景物可以看作箭从武器点修正与发射者视点的相对角度按一定速度(考虑模拟重力阻力修正方向和速度)移动到与目标场景物检测碰撞反应的点处,然后停止移动且它们之间没有绑定关系。至于引擎为什么要这么设定,很简单,因为大多数mod不会想要做让场景物移动的功能,所以有些物理特性引擎不必要搞出来(虽然骑砍系统是有支持场景物的物理特性的)
但是这还不够说明武器类item和场景物品prop在引擎层面的深度联系甚至说同源改造,那就要提到循环命令场景物的命令,它可以使已经主动或因死亡丢弃的或者插入其他场景物或地面的武器受到命令影响,这说明引擎把我前一句所说的那种状态下的武器item看作了一个没有碰撞体的场景物去处理;
而插入人身体的武器不受影响因为原理类似于attachprop命令的影响导致这一类对移动类命令失效(PS:手上拿的武器也是同理attach,因为武器的绑定位置是一个可以被获取的人体hitbox坐标)。
所以综上,在引擎内部,item武器类型的物品和sceneprop场景物类型在一定程度是属于同源改造,拥有大量通用适用的基础功能,然后根据各自在游戏中的用途做出适当限定和针对性延伸,使得某些情况下对模型资源的功能赋予更加的通用化和调用快捷化。
(可以再通俗解释一下,比如骑砍对于兵种类模型资源的功能赋予,会把士兵分队或分成骑兵步兵弓兵,就是一种类的细分,为了在一些具体的细节情形上方便操作,对同类事物继续分化分类,武器类也不用说,分为单手远程等等,场景物在1.161版本后也是有特性分类也可以自己设定条件分组,所以很多东西不用分立的去看,它们可以是相同的大类,也可以是根据具体情形特性条件分化的小类。然而只是有些东西常常被世人习惯分开看待,或者使用上有侧重或者歧视或者有优先级之分,所以一些联系和本源就会被人忽略。简单点说,这就像人和动物的关系一样,还有他们的各种级别的物种分类)
GMT+8, 2024-4-24 08:39 , Processed in 0.057264 second(s), 9 queries , Gzip On, MemCached On.
Powered by Discuz! X3.4 Licensed
© 2001-2023 Discuz! Team.