gpt4 book ai didi

unity3d - Raycasting 立即移动的对撞机

转载 作者:行者123 更新时间:2023-12-03 19:44:16 25 4
gpt4 key购买 nike

我需要将一些带有附加碰撞器的变换移动到特定位置,然后检查其中一个是否被光线转换击中。

我已经做到了天真的方式(伪代码):

foreach(object in objects){
actual_position = object.transform.position
object.transform.position = object.new_position
}
if(Physics.Raycast(...)) objectHit();
// Then I revert each of them them back to their actual_position

在使用相同的上下文(每个对象的测试之间的相同位置)进行多次测试后,光线转换有时会丢失,有时不会(~50/50)。

做了一些研究,发现在 Raycast 文档页面中:

If you move colliders from scripting or by animation, there needs to be at least one FixedUpdate executed so that the physics library can update its data structures, before a Raycast will hit the collider at it's new position.



于是我平息了怒火,开始寻找解决办法。
该线程有一种使用协程等待下一个滴答声的方法:
Raycast doesn't work properly

我担心它对我不起作用,因为我需要物体立即回到它们的真实位置。
这个过程每帧可以发生多次(每次玩家开火时)

有没有办法强制对撞机更新?

如果没有......我应该制作自己的光线转换和碰撞器吗? :(

谢谢

最佳答案

另一种解决方法是立即停用和激活游戏对象(附加对撞机)。在这种情况下,碰撞器位置将在单帧中更新。
另一个解决方案是
Physics.autoSyncTransforms and Physics.SyncTransform

关于unity3d - Raycasting 立即移动的对撞机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40609672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com