如果我们把子弹单次移动的距离调大,比如 100:
子弹移动过程中就很容易跨过障碍物和敌人,导致穿墙,或穿过敌人:
要解决这个问题,可以分步检测,即一大步拆成若干小步再检测。 比如,移动 53 步,可以拆成 10 次移动 5 步,最后移动 3 步。 写成代码大概是这样:(记得勾选不刷新屏幕) (注:在自制积木中使用“停止这个脚本”,会结束当前自制积木的运行,而不会停止原脚本)
上面的单次步数是在大地图的坐标系下。例如在大地图中单步 5,碰撞箱缩放 0.1,那实际在舞台上只移动了 0.5。而 0.5 太小了,可能不足以改变物体和小地图碰撞箱的检测结果。 因此,将输入的大地图“单步”改成小地图上的单步,这样输入时可以确保最小输入为 1,而不会出现 0.5 步的情况。例如单步 1,缩放系数 0.1,则实际大地图移动了 10 步。
然后,我们就可以将子弹的移动替换为分步检测:
这样,无论移动的距离再大,也不会出现穿墙的情况(如果遇到很薄的墙仍然穿过,就把单步改小。但也不能太小,容易导致卡顿)
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=STG202/Arkos/Lec9/02&type=comment"
title="{射击中级-9-02-子弹分步检测}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>
本页索引