找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1036|回复: 3

[经验分享探讨] 尤里火箭落地

[复制链接]
发表于 2025-9-9 17:10:39 | 显示全部楼层 |阅读模式
本帖最后由 啦啦怪 于 2025-9-10 14:06 编辑



如图所示,两个阶段,速度和高度可调,可加段数。动画实现,
有些问题和优化还想请教一下大家。
游客,本帖隐藏的内容需要积分高于 50 才可浏览,您当前积分为 0

[YAROCKBeginA]  ;假
Image=INVISO
Bouncer=yes
Elasticity=0.0
MaxXYVel=1;1500.0
MaxZVel=-100.0
ExpireAnim=YAROCKBeginB
LoopCount=-1

[YAROCKBeginB];假
Image=INVISO
Elasticity=0.0
MaxXYVel=1.0
MinZVel=-150.0 ;调节初始下降高度
LoopStart=0
LoopEnd=1
LoopCount=1
IsMeteor=true
TrailerAnim=YAROCKBeginC ;产生一阶段
TrailerSeperation=3
ExplodeOnWater=yes

[YAROCKBeginC] ;第一阶段
Image=YAROCKUP2
Elasticity=0.0
MaxXYVel=1.0
MinZVel=-90.0;;第一阶段速度
LoopCount=130 ;一阶段持续时间
IsMeteor=true
TrailerAnim=YAROCKSmokeA ;尾烟
TrailerSeperation=2
ExplodeOnWater=yes
AltPalette=yes
YDrawOffset=-175
ExtraShadow=no
Next=YAROCKBeginD

[YAROCKBeginD] ;;用于改变速度
Image=YAROCKUP2
Elasticity=0.0
IsMeteor=true
TrailerAnim=YAROCKBeginE ;产生二阶段
TrailerSeperation=2
ExplodeOnWater=yes
AltPalette=yes
ExtraShadow=no
YDrawOffset=-175
Rate=450
Next=YAROCKSmokeTO ;一阶段结束的烟,这个烟会继承速度向下

[YAROCKBeginE] ;二阶段
Image=YAROCKUP2
Elasticity=0.0
MaxXYVel=1.0
MinZVel=-20.0;速度
LoopCount=-1  ;直至落地
Bouncer=yes
IsMeteor=true
TrailerAnim=YAROCKSmokeTO;YAROCKSmokeB
TrailerSeperation=60;2
ExplodeOnWater=yes
AltPalette=yes
ExpireAnim=YAROCKDownExpA;落地动画

[YAROCKDownExpA];落地动画A有伤害
Image=YAROCKUP2
LoopCount=100;A持续时间
Next=YAROCKBeginFA
AltPalette=yes
Next=YAROCKDownExpB
Weapon=YAROCKDownWp
Damage=10000
Damage.Delay=10

[YAROCKDownExpB];落地动画B无伤害,这个阶段出来兵
Image=YAROCKUP2
LoopCount=200;B持续时间
Next=YAROCKBeginF;接下来的动画用来离开地面,和前面差不多
AltPalette=yes
TrailerAnim=YAROCKDownExpTOC;准备发射放的烟
TrailerSeperation=30

[YAROCKBeginF]
Image=YAROCKUP2
TrailerAnim=YAROCKBeginG ;起飞
TrailerSeperation=2
ExplodeOnWater=yes
AltPalette=yes
Elasticity=0.0
MaxXYVel=2.0
MinZVel=1.0
LoopStart=0
LoopEnd=1
LoopCount=2
Bouncer=yes
Next=NUKETO

[YAROCKBeginG]
Image=YAROCKUP2
Elasticity=0.0
MaxXYVel=1.0
MinZVel=135.0
LoopCount=90
Bouncer=yes
TrailerAnim=YAROCKSmokeB
TrailerSeperation=2
ExplodeOnWater=yes
AltPalette=yes

[YAROCKSmokeA];尾烟
Image=NUKEPUFF
Rate=900
Translucent=yes
YDrawOffset=-175
StartSound=NukeLaunch

[YAROCKSmokeB];尾烟
Image=NUKEPUFF
Rate=900
Translucent=yes

[YAROCKSmokeTO]
StartSound=NukeLaunch
Image=NUKETO
YDrawOffset=30
LoopCount=1
TrailerAnim=YAROCKSmokeB
TrailerSeperation=10

[YAROCKDownExpTOC]
StartSound=ExitTransport
Image=NUKETO
LoopCount=1
YDrawOffset=10
Translucent=yes



[Animations]
+=YAROCKBeginA
+=YAROCKBeginB
+=YAROCKBeginC
+=YAROCKBeginD
+=YAROCKBeginE
+=YAROCKBeginF
+=YAROCKBeginG
+=YAROCKSmokeA
+=YAROCKSmokeB
+=YAROCKDownExpA
+=YAROCKDownExpB
+=YAROCKDownExpTOC
————————————————

火箭动画是这样的 72x300,火箭实体刚好150,落地不穿帮。

由一阶段向二阶段转变的过程中,YAROCKBeginC(一阶段)通过Next在动画中心处生成YAROCKBeginD,
YAROCKBeginD再通过TrailerAnim产生YAROCKBeginE(二阶段)。
问题来了,next和TrailerAnim不都是在上一个动画中心点处产生下一个动画吗,CDE三个动画Image都一样
的话,理论上应该能完美衔接才对。实际却是

TrailerAnim生成的E会往高偏,所以去调C和D的和尾烟的YDrawOffset

希腊奶,我也不知道我说的对不对,求解答和优化


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

参与人数 1威严 +1 DIY币 +20 收起 理由
Noble_Fish + 1 + 20 不错

查看全部评分

发表于 2025-9-9 23:04:20 | 显示全部楼层
2025 年还能看见有人用古法 MinZVel 调整起始点和重设速度,感动枯了
但是那个 MaxXYVel=1.0 在数据量够大的情况下会很容易地看出并不垂直,这也是你一阶段结束与二阶段开始的方向出现差异的原因(从落点向两个碎片飞来方向作延长线会很容易看出来,事实上根据你的数据有时候进入二阶段过早使得二阶段下落时间够长的话也可以看出来)至于 NextTrailerAnim,一个会继承到原速度矢量更靠下一个不会(并且不会的这个还因为速度设置而使得生成点更加靠上,进而使得两点间的距离进一步拉大)所以需要调
再就是 MaxZVel 这个语句实际上是 VoxelAnimType Only 的,Animation 不读它,所以 Shape 碎片上这句没用,对应的也就是说我们实际上根本无法限制住这个最大 Z,这就导致流星下来的起始点和速度是不能固定下来的。这在本就要命中原动画位置的尾烟碎片上最终会用距离和速度凑出一个差不多一致的时间,但是我们这里的原动画位置不是最终命中点,因此碎片到原动画位置以后还有一个飞跃过程,而上面的问题就会导致这个过程飞跃时的速率存在不确定性,从而影响整个系统。事实上这也是你第一阶段结束位置和第二阶段起始位置无法很好处理的根本原因——结合第一条提到的速度矢量继承共同作用导致一阶段结束点和尾烟动画中心这两个点之间的距离就是不固定的,而这个中心点和二阶段碎片的生成点又是不固定的,所以你示例中仍然可以遇到第二阶段起始点比第一阶段结束点位置还高的情况,哪怕你已经给一阶段加了 175。然而即便是当前这个值也已经偶尔会由于两点间距离不够大导致图像高度跳变了
此外由 TrailerAnim 的运作方式决定你这个运作原理在两个阶段交接时可能会有一帧丢失图像的问题,我下下来你演示位置偏移问题的 GIF 验证了一下是在第 13 帧,当然这个问题倒不是必然发生(由创建时的初始状态决定)

虽然这个样例自身就存在问题、大多人拿走也远不能做到随心所欲地调整,不过(如果对这方面不熟悉还)能连画带测理出这么一组表现相对还算不错的数值想必也花了相当多的时间,楼主辛苦

与主结构无关的小问题:
  1. Translucency 会被 Translucent=yes 覆盖,写一句即可;BouncerIsMeteor 也是
  2. ShadowExtraShadow 是为了兼容不同 Phobos 版本吗
  3. 对于 Shape 碎片既然没写 BounceAnim 那么 Elasticity 其实可以不手动设 0
  4. 落到地上以后的图像可以加个影子
回复

使用道具 举报

 楼主| 发表于 2025-9-10 07:57:59 来自手机 | 显示全部楼层
Noble_Fish 发表于 2025-9-9 23:04
2025 年还能看见有人用古法 MinZVel 调整起始点和重设速度,感动枯了但是那个 MaxXYVel=1.0 在数据量够大的 ...

太详细了,感谢大佬解答
回复

使用道具 举报

发表于 2025-9-10 11:53:36 | 显示全部楼层
不建议用碎片,不仅难控制而且影子绘制硬伤无法修改。理想状态是用这几个原版素材直接拼装一个完整动画播放,播完了出兵
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|Archiver|手机版|管理员邮箱|红警DIY论坛 |网站地图

GMT+8, 2026-8-27 07:05 , Processed in 0.053390 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表