如何在 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);
我是 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);