0

シューターの回転角度に基づいて「ショット」をインスタンス化する単純なシューティングメカニズムを開発しようとしています。ここでの私の問題は、射手が 0* に向けられていても、ショットは 45* の角度で発射されることです (これは、射手が 45* に向けられている場合、ショットが正確に発射されるため、問題が発生していると推測しているものです)。 90*)。

射角(0,0,0)

ここに画像の説明を入力

シューター角度(0,0,45)

ここに画像の説明を入力

注 - ボールは常に黒い平らな円柱オブジェクトの中心から発射されます。

必要なコード:

public class ShotMoveScript : MonoBehaviour {
    public static float xForce;
    public Transform shott;
    void Update () {
        if(Input.GetKey(KeyCode.Q))
        {
            transform.Rotate(Vector3.forward, 5f);
        }

        if(Input.GetKey(KeyCode.E))
        {
            transform.Rotate(Vector3.forward, -5f);
        }

        if(Input.GetKey(KeyCode.Space))
        {
            xForce += 0.2f;
        }

        if(Input.GetKeyUp(KeyCode.Space))
        {
            Instantiate(shott, transform.position, transform.rotation);
        }

    }
}

インスタンス化されるボールに添付されたスクリプト:

public class MovementScript : MonoBehaviour {
    void Update () {
        Rigidbody2D rb;
        rb = GetComponent<Rigidbody2D> ();
        rb.gravityScale = 0.8f;
        transform.Translate( new Vector3(1,1,0) * ShotMoveScript.xForce * Time.deltaTime, Space.Self);
    }
}
4

1 に答える 1