gpt4 book ai didi

Unity3D检测屏幕边缘 - 移动时对象闪烁

转载 作者:行者123 更新时间:2023-12-02 03:38:41 24 4
gpt4 key购买 nike

大家好,我正在开发一款简单的 Space Shooter 风格的 2D 游戏,我被困在对象应该限制自己移动到屏幕左右边缘之外的位置。

我在 Unity Answers 的一个答案中实现了 @Waz 解决方案,如果对象不是刚体,它会很好用。但是,如果它应用于刚体,对象就会开始闪烁。下面是我从@Waz 使用的代码

    float speed = 0.1f;
Vector3 viewPos = Camera.main.WorldToViewportPoint(transform.position);
viewPos.x = Mathf.Clamp01(viewPos.x);
viewPos.y = Mathf.Clamp01(viewPos.y);
transform.position = Camera.main.ViewportToWorldPoint(viewPos);

这是@Waz 提到他的一段代码的链接: http://answers.unity3d.com/questions/148790/detecting-the-edge-of-the-screen.html

这是一个链接,上面说要为刚体使用替代解决方案,但这段代码对我不起作用: http://answers.unity3d.com/questions/62189/detect-edge-of-screen.html

我不确定如何修改上面的代码,使我触摸和移动的对象不闪烁。任何帮助都会很棒。

最佳答案

您正在从任意浮点坐标转换到范围 [0,1] 并再次返回。当您的世界位置远离 0 时,您遇到的问题可能是由于浮点不准确造成的。

有多种方法可以解决这个问题:

  1. 在上面的脚本中,只有当它们实际接触到屏幕边缘时才执行转换。
  2. 处理OnBecameVisible()OnBecameInvisible()消息。不要让玩家离开屏幕,否则会导致他们“隐身”。
  3. 使用来自 thisIsVisibleFrom() 回调维基文章。 Some people更喜欢这个,因为他们声称 OnBecameVisible()/OnBecameInvisible() 已损坏。”
    我不知道他们是如何/为什么相信自己已经崩溃了。

关于Unity3D检测屏幕边缘 - 移动时对象闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21556496/

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