如何在 2D 游戏中使用 rigidbody.addforce 作为子弹

How to use rigidbody.addforce for a bullet in a 2D game

我是 unity 的初学者,我想重新创建一个像蠕虫这样的 2D 回合制游戏。我有一个炮塔和一颗子弹。我遇到的问题是我无法使用此代码,因为我在 2D 中使用对撞机和刚体,我查看了文档并且在 2D 中有一个 rigidbody.addforce 但我不知道如何使用它。这个问题可能很愚蠢,但请耐心等待。

using UnityEngine;
using System.Collections;
public class Bullet : MonoBehaviour {
    public float speed;

    // Use this for initialization
    void Start () { 
        rigidbody.AddForce(5, 5, 0, ForceMode.Impulse);
    }

    // Update is called once per frame
    void Update () {
        transform.Translate(speed * Time.deltaTime, 0, 0);
    }

    void OnCollisionEnter(Collision c){
        if (c.gameObject.tag == "Platform") {
            Destroy(gameObject);
        }
    }
}

只需更改此:

    rigidbody.AddForce (5,5,0,ForceMode.Impulse);

相当于二维:

    rigidbody2D.AddForce(new Vector2(5, 5), ForceMode2D.Impulse);

此外,如果您将 2D 碰撞器附加到游戏对象,则需要使用 OnCollisionEnter2D 而不是 OnCollisionEnter

PS。如果您只想用力影响速度,请删除此行:

    transform.Translate(speed * Time.deltaTime, 0, 0);