Unity3d 如何正确地检测玩家何时可以从上方击溃敌人?
这个问题比看起来要复杂得多,原因如下 我有一个播放器,并且在2D+3D世界中启用了physic 怪物有一个正弦运动=他们从右到左上下移动。 玩家只能跳得差不多高,但不能左右移动(就像Chrome上没有互联网连接的恐龙游戏) 在多次尝试检测玩家是否在上面失败后(这不仅仅是Unity3d 如何正确地检测玩家何时可以从上方击溃敌人?,unity3d,Unity3d,这个问题比看起来要复杂得多,原因如下 我有一个播放器,并且在2D+3D世界中启用了physic 怪物有一个正弦运动=他们从右到左上下移动。 玩家只能跳得差不多高,但不能左右移动(就像Chrome上没有互联网连接的恐龙游戏) 在多次尝试检测玩家是否在上面失败后(这不仅仅是if(PlayerY-MonsterY)>0,否则我不会在这里问),我想到的最好办法是在怪物中制作两个对撞机:一个用于“头部”,另一个用于“身体” 当玩家只击中头部时,它只能在上面(否则首先是身体),所以情况很简单 当玩家只击中
if(PlayerY-MonsterY)>0
,否则我不会在这里问),我想到的最好办法是在怪物中制作两个对撞机:一个用于“头部
”,另一个用于“身体
”
- 当玩家只击中头部时,它只能在上面(否则首先是身体),所以情况很简单
- 当玩家只击中身体时,它只能在身体下方或侧面,所以情况也很简单
- 有时,玩家恰好击中了两个对撞机
FixedUpdate
计算之后检查这一点
如果您阅读,则没有LateFixedUpdate
:尽管有LateUpdate
,但官方规定开发人员应该在FixedUpdate
中处理物理问题,而不在其他任何地方
到目前为止,我所做的是:当调用怪物头部的OnCollision
时,只需更改一个布尔值,怪物身体的OnCollision
也是如此。因此,在OnCollisionXXX之后,正如文档所说,只有一件事可以使用:yield WaitForFixedUpdate
我想检查这些布尔值,并根据它们在yield WaitForFixedUpdate
中的值进行操作
我在网上找不到任何关于如何做到这一点的有价值的例子。在这种情况下,您知道如何实现yield WaitForFixedUpdate
?我被这个问题困住了。
如何实现yield WaitForFixedUpdate
收益率
用于
yield
类似于“在此处中断例程,渲染当前帧,然后在下一帧中从此处继续。”
e、 g
private void Start()
{
//开始例行公事一次
Start例程(LateFixedUpdate());
}
私有IEnumerator LateFixedUpdate()
{
//看起来很吓人,但在一次合作中很好
//只要你在循环中的某个地方让步
while(true)
{
//在所有脚本上调用所有FixeUpdate后继续
返回新的WaitForFixedUpdate();
//做点什么
}
}
什么是2D+3D世界
?