1
我正在进行各种游戏池游戏。为了创建表格,我使用了立方体作为边。我想使用内置的物理引擎来让这些边与球交互。可悲的是我无法让它工作。unity3d创建表格边框
这是我所做的。我创建了立方体作为一面,并创建了一个球体。为了移动球体,我使用了rigidbody.MovePosition函数。立方体和球体都有碰撞体和刚体连接,并且重力被关闭。
球体运动很好,但是当它与立方体碰撞时,会使立方体飞行。由于立方体应该是一个不动的墙,我限制了所有轴的旋转和运动。但是,使用约束会导致物理引擎变得疯狂。而不是球体停止或反方向移动,它只是通过立方体。显然,有些事情是错误的,我需要帮助来搞清楚。
在此先感谢。
以下是用于移动球体的代码。
public float movePower = 10.0f;
// Update is called once per frame
void Update()
{
if(Input.GetKey(KeyCode.LeftArrow))
{
rigidbody.MovePosition(transform.position + Vector3.left* movePower * Time.deltaTime);
}
if(Input.GetKey(KeyCode.RightArrow))
{
rigidbody.MovePosition(transform.position + Vector3.right* movePower * Time.deltaTime);
}
if(Input.GetKey(KeyCode.DownArrow))
{
rigidbody.MovePosition(transform.position + Vector3.down* movePower * Time.deltaTime);
}
if(Input.GetKey(KeyCode.UpArrow))
{
rigidbody.MovePosition(transform.position + Vector3.up* movePower * Time.deltaTime);
}
}
哦,那是我做错了什么。想到碰撞检测,我会需要刚体,并且不加思索地添加它们。 编辑:不。同样的情况。球体正好穿过立方体。他们应该碰撞,但有些事情是关闭的。 – jitendragarg 2013-02-19 17:30:25
@jitendragarg查看我的更新 – Kay 2013-02-19 17:57:00
感谢您的更新。我加倍检查触发和碰撞矩阵。两者都很好。尝试将速度降低到每更新1个屏幕点,结果相同。我从来没有玩过物理管理员,所以所有设置都是默认设置。增加重力使球不能移动。 虽然我对fixedupdate没有太多的想法。截至目前,我有默认的更新功能检查输入,并通过moveSpeed * Time.deltaTime移动球。 moveSpeed默认为10,所以在技术上它应该在每次按下按钮时移动10个屏幕点。我将代码添加到问题中。 – jitendragarg 2013-02-20 11:10:14