0

Unity の初心者なので、ワーム ゲームのようなターン制のゲームに取り組んでいます。しかし、何らかの理由で、私の攻撃スクリプトは左側のユニットに対してのみ機能し、右側のユニットには機能しません。具体的には、私がインスタンス化した弾丸は、右側の弾丸を発射すると間違った方向に進みますが、左側の弾丸は期待どおりに機能します。文字ボタン用に別のスクリプトを用意していますが、箇条書きには同じスクリプトを使用しています。

ブレットスクリプト

public float speed;
public float posX, posY;

// Use this for initialization
void Start () {
    rigidbody2D.AddForce (new Vector2 (posX, posY), ForceMode2D.Impulse);
}


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

void OnCollisionEnter2D(Collision2D c){
    if (c.gameObject.tag == "Base") {
        Destroy(gameObject);
        Destroy(c.gameObject);
    }
    else if(c.gameObject.tag == "Player2"){
        Destroy(gameObject);
        Destroy(c.gameObject);
    }
}

void OnBecameInvisible () {
    Destroy(gameObject);
}   

キャラクタースクリプト

gameObject go は弾丸のプレハブです

public GameObject go;

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
        if(gameObject.tag == "Player2"){
            if(Input.GetKeyUp(KeyCode.Backspace)){
                Instantiate(go,transform.position,transform.rotation);
            }
        }

}

}

4

1 に答える 1

0

すべての弾丸に同じ力( ) を適用してposX, posYいるため、弾丸はすべて右に進みます (左側からは正しい方向、右側からは反対方向)。

必要なことは、変数を使用して、弾丸を発射する個々のゲームオブジェクトの方向を追跡し、その方向を弾丸に使用することAddForce()です。または、ゲームオブジェクトがもう一方の半分に移動/通過しない場合は、左右のゲームオブジェクトを区別し、対応する力ベクトルを使用する必要があります。

于 2015-02-03T15:15:38.507 に答える