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
,但没有效果,问题仍然存在。