unity3d 如何在Unity中检测2D项目中的碰撞(不使用RigidBody2D)?

vmdwslir  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(161)

我第一次尝试我的手在统一,作为一个“地狱世界”类的项目,我的目标是一个2D“小行星”游戏。
我前进得很好,但是碰撞让我头疼。它们不起作用。我尝试过使用和不使用刚体。但是RB迫使我将它设置为运动学,因为它会由于重力而倒下,这不是我想要的自上而下的射击游戏。
我尝试设置“全动态接触”没有任何运气。
有很多不同的可能组合,我找不到正确的一个。刚体或不是?对撞机或不是?也许两者兼而有之?
这里有一个重现这个问题的小演示项目。我 * 期望 * 当圆圈碰到正方形时,它会在控制台上显示一条日志线。但是它没有。我该怎么做呢?
https://github.com/exhuma/unity-collision-test

amrnrhlw

amrnrhlw1#

RB迫使我将其设置为运动学,因为否则它会由于重力而倒下
您可以取消选中刚体组件中的重力。(刚体2D上的重力比例)刚体是与物理接触的一种方式。
刚体还是非刚体?对撞机还是非对撞机?也许两者都有?
将两者都添加。
我在github上看过你的代码,我想建议
使用力度

rigidbody.velocity = new Vector2(300 * Time.deltaTime, 0);

代替

transform.Translate(Vector2.right * Time.deltaTime * 3);

而且还添加了

public Rigidbody2D rigidbody;
void Start()
{
     rigidbody = GetComponent<Rigidbody2D>();
}

脚本附加的gameobject必须有Rigidbody2D

这里是doc链接:https://docs.unity3d.com/ScriptReference/Rigidbody-velocity.html
谢谢

相关问题