首页 > 解决方案 > Unity 使预制件与周围环境发生碰撞,但不会与同一预制件的其他对象发生碰撞

问题描述

下图是我的模拟,我面临的问题是它们不会以我想要的方式碰撞。 我的游戏项目

我让它们随机移动,我想要这种行为。

  1. 绿球应该从外部灰色墙壁“反弹”,因此与它们发生碰撞(模拟物理)
  2. 绿球不应该相互反弹,而只会触发事件(所以我知道它们何时相互重叠)

我该怎么做呢。我查看了多个教程,但我根本不知道该怎么做。据我了解,要进行碰撞,其中一个对象必须具有刚体,而另一个对象必须是普通对撞机?

在此处输入图像描述

我必须尝试遵循此概述。这些球来自同一个预制件,所以要为它们获得触发器,我必须选择静态触发器对撞机、刚体对撞机触发器或运动刚体触发器对撞机(从概述中可以看出)。但是,如果我选择其中任何一个,我就不会与墙壁发生碰撞?我必须自己做墙壁碰撞吗?

标签: unity3dtriggerscollision-detection

解决方案


您可以做的是让所有墙壁成为静态对撞机,并在所有球上制作一个脚本,检查它们是否撞到墙壁或球。并以这种方式进行操作。

或者

让墙壁检查与球的碰撞,并向它们来自的负方向或其他东西添加力。(取决于您希望球的行为方式)

例如 :

  OnTriggerEnter(collision other)
  
  if(other.transform.tag == Ball)
   //Run Some Code here
   // for example
   BallRb other.GetComponent<RigidBody>();
   BalRb.addForce //add the force that you want.

推荐阅读