如何在不经过碰撞器的情况下移动物体

问题描述 投票:0回答:2

我正在使用

Unity
,我正在玩乒乓球游戏。我希望能够用鼠标键移动桨。我试过只是移动他们的位置,但那当然会简单地通过运动场边缘的对撞机“传送”他们。我尝试使用
addForce()
并将刚体固定在 x 位置,但是,当球击中球拍时,它会推动球拍,球拍弹回。球的所有能量都消失了(我的比赛中有重力)。我怎样才能移动这个盒子对撞机,但在移动时不让它重叠在其他盒子对撞机上?谢谢!!!

unity3d unity3d-2dtools
2个回答
0
投票

您的桨应该是一个运动学(IsKinematic 参数)刚体(附加的 RigidBody2D)对撞机,而边缘应该只是一个静态对撞机。但是,您应该在脚本中控制桨运动的限制/边缘。

如果你这样做,你的球会自然地从边缘反弹并离开你的球拍。但是,如果您希望球通过边缘但通知您这样做(例如丢失条件),您应该使边缘成为静态触发碰撞器(IsTrigger 参数)。

这里有一个包含不同类型碰撞器之间所有交互的详细列表:http://docs.unity3d.com/Manual/CollidersOverview.html。生成的消息通过 2 个不同的函数传递:OnTriggerEnter2D 和 OnCollisionEnter2D。


0
投票

我的项目遇到了同样的问题。经过一番搜索,我找到了一个名为 Default Max Depenetration Velocity 的设置。它位于项目设置 > 物理 > 默认最大穿透速度上。它的值默认为 10。将其更改为 100 或任何更高的值,直到游戏对象不通过对撞机。希望对您有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.