Unity3d 使刚体从屏幕边缘反弹

Unity3d 使刚体从屏幕边缘反弹,unity3d,Unity3d,我现在正在研究一个物体,它有气泡状的运动。该对象具有刚体和球体碰撞器 我每隔1-3秒使用AddForce方法使其连续缓慢移动 现在我想知道当刚体已经到达屏幕边缘时,如何使其朝相反的方向移动(也称为反弹)。我已经使用ViewportToWorldPoint方法计算了屏幕边缘 我想到的一个无效解决方案是在边缘放置带有collider的空游戏对象,但这在我的情况下不起作用,因为我正在为具有不同屏幕分辨率/大小的移动设备构建 有人知道解决这个问题的好办法吗?我不确定我是否有这个想法。但我想我在写一个旧的

我现在正在研究一个物体,它有气泡状的运动。该对象具有刚体和球体碰撞器

我每隔1-3秒使用
AddForce
方法使其连续缓慢移动

现在我想知道当刚体已经到达屏幕边缘时,如何使其朝相反的方向移动(也称为反弹)。我已经使用
ViewportToWorldPoint
方法计算了屏幕边缘

我想到的一个无效解决方案是在边缘放置带有collider的空游戏对象,但这在我的情况下不起作用,因为我正在为具有不同屏幕分辨率/大小的移动设备构建


有人知道解决这个问题的好办法吗?

我不确定我是否有这个想法。但我想我在写一个旧的手机游戏时也遇到了同样的问题

我的想法与您的想法相同,使用空游戏对象,边缘带有框碰撞器,但后来我想,这没有响应,所以我编写了以下代码:

public class Walls_c : MonoBehaviour {

    public Transform righttop;
    public Transform rightbottom;
    public Transform lefttop;
    public Transform leftbottom;

    // Use this for initialization
    void Start () {
        righttop.transform.position = Camera.main.ViewportToWorldPoint(new Vector3(1,1,0));
        rightbottom.transform.position = Camera.main.ViewportToWorldPoint(new Vector3(1,0,0));
        lefttop.transform.position = Camera.main.ViewportToWorldPoint(new Vector3(0,1,0));
        leftbottom.transform.position = Camera.main.ViewportToWorldPoint(new Vector3(0,0,0));   
    }
}
有了这个,我总能看到屏幕的各个角落。这不是幻想。。。但它是有效的


现在让我看看它是否有效。

为了获得反射效果,您需要
材质。将反弹材质附加到边缘(游戏对象),让物理计算碰撞的反应

创建物理2D材质,并将反弹设置为适当的值,例如
0.2

关于你的问题:

我想到的一个无效的解决方案是把空的游戏 在边缘使用碰撞器的对象,但在我的情况下不起作用 因为我正在为屏幕不同的移动设备进行构建 分辨率/大小

如果您使用的是UI组件,那么处理边界应该不是问题(因为它以不同的分辨率定位),但如果不是这样,您可以创建脚本
摄影机
和枚举
定位
(左、右、上、下)使用相同的方法,您可以通过将空游戏对象(边界)附加到游戏对象,将其与任何屏幕大小对齐


希望有帮助

谢谢你的回答。这有助于确定屏幕的边缘,这样无论屏幕大小,我都可以正确定位我的空游戏对象。谢谢你的回答。当您说将反弹材质附加到视口的边缘时,是否存在可以在Unity编辑器中访问的视口对象?仍然是新的,正在用Unity解决问题抱歉:P如果有,那会很有帮助,这样我就不必手动担心不同屏幕大小的碰撞框的大小。这里没有视口对象。我的意思是将材质附加到用作边界的游戏对象上,这些边界应该使用
ViewportToWorldPoint
与屏幕的各个角落对齐。啊,我明白了。有那么一秒钟,我以为有。我现在明白了。我将尝试用你建议的方法使反弹生效。我会在完成后更新。获得了我正在寻找的反弹效果。谢谢