Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果角度太大,对象将开始沿碰撞器边缘移动_C#_Unity3d - Fatal编程技术网

C# 如果角度太大,对象将开始沿碰撞器边缘移动

C# 如果角度太大,对象将开始沿碰撞器边缘移动,c#,unity3d,C#,Unity3d,我不确定是什么原因造成的,但我有一些物体,当它们以太大的角度(钝角)撞击碰撞机时,它们不会从碰撞机上反弹,它们只是开始沿着x或y移动,这取决于碰撞的顶部或侧面 我正在使用以下代码: using UnityEngine; using System.Collections; public class Ball : MonoBehaviour { Rigidbody2D rb; public float speed; void Start(){ rb = Ge

我不确定是什么原因造成的,但我有一些物体,当它们以太大的角度(钝角)撞击碰撞机时,它们不会从碰撞机上反弹,它们只是开始沿着
x
y
移动,这取决于碰撞的顶部或侧面

我正在使用以下代码:

using UnityEngine;
using System.Collections;

public class Ball : MonoBehaviour {
    Rigidbody2D rb;
    public float speed;
    void Start(){
        rb = GetComponent<Rigidbody2D>();
        // Set the start direction
        direction = new Vector2(Random.value, Random.value);
        rb.velocity = direction * speed;
    }
    void LateUpdate(){
        rb.velocity = speed * rb.velocity.normalized;
    }
}
使用UnityEngine;
使用系统集合;
公共班级舞会:单一行为{
刚体2d rb;
公众浮标速度;
void Start(){
rb=GetComponent();
//设置开始方向
方向=新矢量2(Random.value,Random.value);
rb.速度=方向*速度;
}
void LateUpdate(){
rb.velocity=速度*rb.velocity.normalized;
}
}
然后,我在移动的物体上有一个
CircleCollider2d
碰撞器,该碰撞器具有
2D物理材料
,具有以下值:
摩擦力=0
反弹度=1

以下是我在球上的设置:

我该怎么做才能阻止该物品在墙上骑行?

我知道了

问题不在于代码,而在于Physics2D设置


我需要将
速度阈值
降低到一个较小的数字。

如果没有这一点,就很难给出任何建议。也就是说,为什么要重新计算
velocity
?对于给定的
摩擦力
反弹
值,
速度
大小是否应该保持不变?如果规范化和重新计算
速度
向量会直接导致您的问题,我不会感到惊讶,因为计算中的某个地方发生了一些下溢。这是最小的,我没有其他东西了?在您的示例中,
rb
的声明在哪里?其他信息在哪里,可以让人们轻松地在他们的项目中创建您在项目中拥有的确切对象?花一点时间考虑一个人需要做些什么来重现你所描述的行为,并且注意所有需要清楚地了解你的场景的信息。有关如何以及为什么提供一个好的、最少的、完整的代码示例的信息,请阅读。我注释了
LateUpdate
,但没有效果,问题仍然存在。