0 支持
42 閲覧

・補足
 プレイヤーを真上からカメラで見下ろす、見下ろしシューティングゲームを作っています。
マウスの方向をプレイヤーが向くようになっています。
 WASDでx軸・z軸を移動させて上下左右移動させたいのですが、プレイヤーが回転しているためカメラから見た上下左右ではなくプレイヤーが向いている方向を基準に移動してしまいます。

・試したこと
 回転するキャラクターの親オブジェクトを用意して、親オブジェクトを上下左右に移動させるようにしたところ、希望通りの挙動になりました。
 ですが、monobit unity networkingを利用する都合で、この方法は使えませんでした。(上下移動しているオブジェクトとプレイヤーオブジェクトが違うため)

・知りたいこと
 プレイヤーが向いている方向ではなく、カメラを基準にプレイヤーを移動させたい。
 (プレイヤーの体がルートになる形で)

・プレイヤーを動かしているコード

void Update()
{
    // カメラとマウスの位置を元にRayを準備
    var ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    // プレイヤーの高さにPlaneを更新して、カメラの情報を元に地面判定して距離を取得
    plane.SetNormalAndPosition(Vector3.up, transform.localPosition);
    if (plane.Raycast(ray, out distance))
    {
        // 距離を元に交点を算出して、交点の方を向く
        var lookPoint = ray.GetPoint(distance);
        target.transform.LookAt(lookPoint);
    }

    // 上下左右移動
    if (Input.GetKey(Key.Up))
    {
        transform.Translate(0, 0, speed);
    }
    if (Input.GetKey(Key.Down))
    {
        transform.Translate(0, 0, -speed);
    }
    if (Input.GetKey(Key.Left))
    {
        transform.Translate(-speed, 0, 0);
    }
    if (Input.GetKey(Key.Right))
    {
        transform.Translate(speed, 0, 0);
    }
}
閉鎖(理由): 質問をした直後、ふと思いついたことを試してみると「試したこと」のままmonobit unity networkingでも正しく動きました。 今までは 親:monobitview, monobit tranform view 子: monobit animation view にしていたところ、 親:monobit view, monobit tranform view, 子: monobit transform view, monobit animation viewにすると子オブジェクトの位置も同期されるようになり、位置ずれが起きなくなりました。 試行不足でお騒がせしてしまい、申し訳ございませんでした。
初心者 (120 ポイント)
閉鎖 | 42 閲覧

関連する質問

0 支持
0 回答
0 支持
1 回答
玉カエル 初心者 (160 ポイント) 1/15 質問 | 87 閲覧
0 支持
1 回答
siroan 初心者 (120 ポイント) 1/8 質問 | 50 閲覧
0 支持
1 回答
こがらし0917 初心者 (120 ポイント) 2/5 質問 | 56 閲覧
2021-02-08 質問・回答をMarkdownで入力できるようにしました。
2020-09-03 新たなスパム対策を導入しました。

114 質問

121 回答

137 コメント

146 ユーザー