亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在隨機方向上向rigidbody2d游戲對象添加力

如何在隨機方向上向rigidbody2d游戲對象添加力

C#
藍山帝景 2022-01-16 15:10:44
如何向rigidbody2D 游戲對象添加力并使其以固定速度移動?游戲對象還附加了一個反彈材料。private Rigidbody2D rb2D;private float thrust = 10.0f;void Start() {}void FixedUpdate() {        rb2D.AddForce(new Vector2(0, 1) * thrust);    }這是我從 Unity 文檔網站上得到的,但這似乎沒有任何作用。這是我最終使用的代碼,它似乎運行正常。Vector2 的方向和速度可以根據質量/重力進行調整。float topSpeed = 15;private Rigidbody2D rb2D;private float thrust = 0.1f;void Start(){    rb2D = gameObject.GetComponent<Rigidbody2D>();    rb2D.AddForce(new Vector2(0, 1) * thrust);}void Update(){    if (rb2D.velocity.magnitude > topSpeed || rb2D.velocity.magnitude < topSpeed)        rb2D.velocity = rb2D.velocity.normalized * topSpeed;}
查看完整描述

1 回答

?
MM們

TA貢獻1886條經驗 獲得超2個贊

您編寫的代碼一旦工作,將無限加速剛體。您需要將速度限制在最大速度:http ://answers.unity.com/answers/330805/view.html


 rigidbody.AddForce(new Vector2(0, 1) * thrust * Time.deltaTime);


 if (rigidbody.velocity.magnitude > topSpeed)

     rigidbody.velocity = rigidbody.velocity.normalized * topSpeed;

如果您希望它立即將速度設置為固定值,那么您可以在每一幀上設置速度:


https://docs.unity3d.com/ScriptReference/Rigidbody-velocity.html


void FixedUpdate()

{

    if (Input.GetButtonDown("Jump"))

    {

        // the cube is going to move upwards in 10 units per second

        rb2D.velocity = new Vector3(0, 10, 0);

        moving = true;

        Debug.Log("jump");

    }


    if (moving)

    {

        // when the cube has moved over 1 second report it's position

        t = t + Time.deltaTime;

        if (t > 1.0f)

        {

            Debug.Log(gameObject.transform.position.y + " : " + t);

            t = 0.0f;

        }

    }

}

您的代碼沒有顯示它,所以如果您還沒有這樣做,您需要確保它rb2D實際上設置為您要操作的對象上的 Rigidbody2d。例如,通過在 start 方法中執行:


void Start()

{

    rb2D = gameObject.GetComponent<Rigidbody2D>();

}


查看完整回答
反對 回復 2022-01-16
  • 1 回答
  • 0 關注
  • 296 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號