Unity3d 使刚体从屏幕边缘反弹
我现在正在研究一个物体,它有气泡状的运动。该对象具有刚体和球体碰撞器 我每隔1-3秒使用Unity3d 使刚体从屏幕边缘反弹,unity3d,Unity3d,我现在正在研究一个物体,它有气泡状的运动。该对象具有刚体和球体碰撞器 我每隔1-3秒使用AddForce方法使其连续缓慢移动 现在我想知道当刚体已经到达屏幕边缘时,如何使其朝相反的方向移动(也称为反弹)。我已经使用ViewportToWorldPoint方法计算了屏幕边缘 我想到的一个无效解决方案是在边缘放置带有collider的空游戏对象,但这在我的情况下不起作用,因为我正在为具有不同屏幕分辨率/大小的移动设备构建 有人知道解决这个问题的好办法吗?我不确定我是否有这个想法。但我想我在写一个旧的
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
与屏幕的各个角落对齐。啊,我明白了。有那么一秒钟,我以为有。我现在明白了。我将尝试用你建议的方法使反弹生效。我会在完成后更新。获得了我正在寻找的反弹效果。谢谢