0

これは私のプレーヤーの動きのコードです:

var animator : Animator;

function Start () {
    animator = GetComponent("Animator");
}


var moveUp : KeyCode;
var moveDown : KeyCode;
var moveLeft : KeyCode;
var moveRight : KeyCode;
var jumpheight : int = 2;
var speed : int = 2;
var isGrounded : int = 0;

// Checks if player is in air or ground

var Jumptest : int = 0;

// Checks if player has jumped

function Update () {

    animator.SetInteger("Direction", 4);

    if (Input.GetKey(moveUp) && isGrounded == 0)
    {
        rigidbody2D.velocity.y = jumpheight;
        isGrounded = 1;
        animator.SetInteger("Direction", 2);
    }


    else if (Input.GetKey(moveLeft))
    {
        transform.position += Vector3.left * speed * Time.deltaTime;
        animator.SetInteger("Direction", 3);
    }
    else if (Input.GetKey(moveRight))
    {
        transform.position += Vector3.right * speed * Time.deltaTime;
        animator.SetInteger("Direction", 1);
    }

}

これは発射体の動きのコードです:

#pragma strict

var speed  = 8.0;
var time = 0.0;


function Start () {

}

var moveRight : KeyCode;
var moveLeft : KeyCode;

function Update () {
    time += Time.deltaTime;
    if(time > 3){
        Destroy(gameObject);
    }

    transform.Translate(Vector3.right * speed * Time.deltaTime, Space.Self);
}

現時点では、発射体は右に発射されます。プレイヤーが向いている方向に撃てるようにしたいです。

if key down a と if key down d を試しましたが、プレーヤーが動いていないときに発射物が停止し、プレーヤーに対して相対的に移動します(左に向かって発射してからプレーヤーを右に移動すると、発射物は方向を反転します)。

誰か知ってる?

4

1 に答える 1

0

プレーヤーの動きをチェックするとき、左右のキーが押されているかどうか、方向を追跡する単純な整数を作成します

...
var isRight: int=1 ;//assuming player starts with facing in the right direction
...

次に、キーの押下をチェックするときに、この変数の値を適切に設定します

...
else if (Input.GetKey(moveLeft)&&!Input.GetKey(moveRight))
{
    isRight = -1;
    ...
}
else if (Input.GetKey(moveRight)&&!Input.GetKey(moveLeft))
{
    isRight = 1;  
    ...
}

最後に、発射体の移動を設定するときは、速度にこの新しい変数を掛けるだけです

    transform.Translate(Vector3.right * speed * isRight * Time.deltaTime, Space.Self);
于 2014-05-06T11:45:33.847 に答える