Unity3d 统一性:AddTorque不';行不通
我有一些像棍子一样直立的障碍物。它是通过rigibody2d(-4,0)中的速度向量移动的。我有一个英雄,他总是呆在游戏屏幕的中央。当英雄与棍子相撞时,我希望障碍物随着一些旋转飞走,这取决于碰撞点(就像物理定律一样,如果碰撞点靠近边缘,则扭矩更大) 但是,rigibody2D上的AddTorque不起作用,尽管AddForce工作正常 有冲突代码Unity3d 统一性:AddTorque不';行不通,unity3d,Unity3d,我有一些像棍子一样直立的障碍物。它是通过rigibody2d(-4,0)中的速度向量移动的。我有一个英雄,他总是呆在游戏屏幕的中央。当英雄与棍子相撞时,我希望障碍物随着一些旋转飞走,这取决于碰撞点(就像物理定律一样,如果碰撞点靠近边缘,则扭矩更大) 但是,rigibody2D上的AddTorque不起作用,尽管AddForce工作正常 有冲突代码 void OnCollisionEnter2D(Collision2D other) { if (other.collider.tag ==
void OnCollisionEnter2D(Collision2D other)
{
if (other.collider.tag == "Block")
{
if (InvBonusEnabled) {
other.collider.isTrigger = true;
other.rigidbody.isKinematic = false;
other.rigidbody.AddTorque(100); //simple test doesn't work
other.rigidbody.AddForce(new Vector2(200, 50));
//
}
}
}
我无法使用预置rigibody2D和碰撞R2D设置附加屏幕(此stackoverflow需要声誉10)
Rigibody2D
质量:1
线性阻力:0
角阻力:0.05
重力比例尺:1
是的
所有冻结位置和旋转都是错误的
碰撞
伊斯特里格:错
我做错了什么?并且已经被弃用了。尝试改用GetComponent()
:
void OnCollisionEnter2D(Collision2D other)
{
if (other.collider.tag == "Block")
{
if (InvBonusEnabled) {
other.collider.isTrigger = true;
Rigidbody2D rb = other.gameObject.GetComponent<Rigidbody2D>();
rb.isKinematic = false;
rb.AddTorque(100);
rb.AddForce(new Vector2(200, 50));
}
}
}
无效OnCollisionInter2D(碰撞2D其他)
{
if(other.collider.tag==“Block”)
{
如果(可投资){
other.collider.isTrigger=真;
Rigidbody2D rb=other.gameObject.GetComponent();
rb.iskinetic=false;
rb.附加扭矩(100);
rb.AddForce(新向量2(200,50));
}
}
}
您的扭矩可能太低。尝试将其增加到数千甚至更高
还可以尝试增加以前对我有效的Only:Rigidbody2D rb=other.gameObject.GetComponent();但它仍然不能工作集10000000,不是吗。。maxAngularVelocity不适用于RigidBody2DY您是否已将
运动学设置为真
,然后在代码中将其设置为假
?为什么不把它关起来?因为我希望在碰撞前障碍物只能水平移动