[英]Unity 2D Physics issue
我對某些物體的物理性有疑問。 在下面的代碼中,是一個類,它用力移動對象,然后與它們碰撞。
private Rigidbody2D rb2d;
public float speed;
void Start()
{
rb2d = GetComponent<Rigidbody2D>();
Invoke("DoStart", 0.5f);
}
public void DoStart()
{
GoBall();
}
void GoBall()
{
float rand = Random.Range(0, 2);
if (rand < 1)
rb2d.AddForce(new Vector2(20, -15) * Time.time * speed);
else
rb2d.AddForce(new Vector2(-20, -15) * Time.time * speed);
}
void OnCollisionEnter2D(Collision2D coll)
{
Vector2 vel;
vel.x = rb2d.velocity.x;
vel.y = (rb2d.velocity.y / 2) + (coll.collider.attachedRigidbody.velocity.y / 3);
rb2d.velocity = vel;
Debug.Log(rb2d.velocity);
}
問題在於,一段時間后對象開始變慢,但是我希望對象不要變慢。 更准確地說,在碰撞后,它們會改變強度或運動速度。 最好移動得更慢,但不要停止,因為它們的速度取決於打擊的力量。 此代碼附加到4個對象
為了防止運動的剛體隨着時間的過去而變慢,您需要消除所有作用在其上的阻力和摩擦力。
要刪除拖動,請導航到對象上的Rigidbody 2D
組件,並將“ Linear Drag
和“ Angular Drag
設置為零:
或者,您可以使用以下代碼以編程方式執行此操作:
Rigidbody2D rb = myObject.getComponent<Rigidbody2D>();
rb.drag = 0.0f;
rb.angularDrag = 0.0f;
要消除摩擦,請創建新的“ Physics Material 2D
並將“ Friction
設置為零。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.