カメラビューの境界内でWASDと矢印キーを使用して複数のプレーヤーを移動する方法

キーボードマン

以下のコードを使用すると、キャラクターを移動してカメラビューに制限できます。しかし、私は入力を使用しているのでInput.GetAxisRaw ("Horizontal");、私のキャラクターは広告キーと矢印キーの両方で動きます。しかし、私は別のキャラクターの矢印キーが欲しいです。AddForce特定のキーを使用するifステートメントを試してみました(これは文字の移動には適していません)。しかし、コードを使用して境界を確認することはできませんでした。何か提案できますか?(ところで、私のキャラクターは水平方向にしか動きません)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerBlueController : MonoBehaviour {

    public float speed;
    public Rigidbody2D player1rb;
    public float viewpointfirst;
    public float viewpointsecond; 


    // Use this for initialization
    void Start () {
    }

    // Update is called once per frame
    void FixedUpdate () {

        float horizontal = Input.GetAxisRaw ("Horizontal");
        if((horizontal > 0) ||  (horizontal < 0)) 
        {
            Vector3 tempVect = new Vector3 (horizontal, 0, 0);
            tempVect = tempVect.normalized * speed * Time.deltaTime;
            Vector3 newPos = player1rb.transform.position + tempVect;
            checkBoundary (newPos);
        }
    }




    void checkBoundary(Vector3 newPos)
    {
        Vector3 camViewPoint = Camera.main.WorldToViewportPoint (newPos);
        camViewPoint.x = Mathf.Clamp (camViewPoint.x, viewpointfirst, viewpointsecond);
        Vector3 finalPos = Camera.main.ViewportToWorldPoint (camViewPoint);
        player1rb.MovePosition (finalPos);
    }
}
プログラマー

代わりに使用するように私の古い答え変更しましたあなたがしなければならなかったすべてはから水平方向の変数を交換した、左に行くとき右に行くとするときに、すべて押されていないとき。残りのコードは同じままです。プレーヤー1プレーヤー2が同じコードを必要とする異なるキーを使用するようにしたいので、同じコードを何度も書かないようにするための関数をさらに追加しましたInput.GetKeyInput.GetAxisRawVector3 (horizontal, 0, 0);-110

プレーヤー1の場合はWASD、プレーヤー2の場合は矢印キーこれらは、呼び出されたUpdate関数で必要なキーに変更できますmovePlayer

public float speed = 50;

public Rigidbody2D rb1;

public Rigidbody2D rb2;

public void Update()
{
    //Player one (WASD)
    movePlayer(rb1, KeyCode.A, KeyCode.D, KeyCode.W, KeyCode.S);

    //Player two (Arrow keys)
    movePlayer(rb2, KeyCode.LeftArrow, KeyCode.RightArrow, KeyCode.UpArrow, KeyCode.DownArrow);
}

void movePlayer(Rigidbody2D targetRg, KeyCode left, KeyCode right, KeyCode up, KeyCode down)
{
    Vector2 hAndV = getInput(targetRg, left, right, up, down);

    Vector3 tempVect = new Vector3(hAndV.x, hAndV.y, 0);
    tempVect = tempVect.normalized * speed * Time.deltaTime;

    Vector3 newPos = targetRg.transform.position + tempVect;
    checkBoundary(targetRg, newPos);
}

Vector2 getInput(Rigidbody2D targetRg, KeyCode left, KeyCode right, KeyCode up, KeyCode down)
{
    Vector2 input = Vector4.zero;

    //Horizontal
    if (Input.GetKey(left))
        input.x = -1;
    else if (Input.GetKey(right))
        input.x = 1;
    else
    {
        input.x = 0;
        targetRg.velocity = Vector3.zero;
        targetRg.angularVelocity = 0f;
    }

    //Vertical
    if (Input.GetKey(up))
        input.y = 1;
    else if (Input.GetKey(down))
        input.y = -1;
    else
    {
        input.y = 0;
        targetRg.velocity = Vector3.zero;
        targetRg.angularVelocity = 0f;
    }

    return input;
}

void checkBoundary(Rigidbody2D targetRg, Vector3 newPos)
{
    //Convert to camera view point
    Vector3 camViewPoint = Camera.main.WorldToViewportPoint(newPos);

    //Apply limit
    camViewPoint.x = Mathf.Clamp(camViewPoint.x, 0.04f, 0.96f);
    camViewPoint.y = Mathf.Clamp(camViewPoint.y, 0.07f, 0.93f);

    //Convert to world point then apply result to the target object
    Vector3 finalPos = Camera.main.ViewportToWorldPoint(camViewPoint);
    targetRg.MovePosition(finalPos);
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

SDL2矢印/ WASDキーをプレーヤーの動きに変換するための最良/最も確実な方法は何ですか?

分類Dev

キーボードの矢印とmouseEventを使用して、Javaでグラフィックを移動します

分類Dev

エスケープキーを使用してメインメニューのビューモードと再生ビューモードを切り替えたり、カメラを移動したりするにはどうすればよいですか?

分類Dev

Javaアプレットを使用して矢印キーでボールを移動する

分類Dev

矢印キーのフォーカスをボタンの代わりにプレーヤーの移動に変更する

分類Dev

WPFでシートごとに複数ページのDocumentViewerを使用してドキュメントをプレビューする方法

分類Dev

矢印キーを使用してマウスカーソルを移動する方法

分類Dev

スーパービュー境界内のサブビューの移動を制限する

分類Dev

上矢印キーと下矢印キーを使用してオブジェクトを移動するときに、別のオブジェクトをx軸に沿って移動させるにはどうすればよいですか?

分類Dev

jQueryの矢印キーを使用してテーブルの行を移動する

分類Dev

アクセス可能なメニュー(html)、タブキー、または矢印キーでフォーカスを移動するための現在のベストプラクティスは何ですか?

分類Dev

初めてセルに入力するときに「左矢印」キーを使用してカーソルを移動する方法

分類Dev

Java GUI:WASDキーを使用してボールを移動する方法は?

分類Dev

矢印キーを押してキャンバスhtml5上の画像を移動する方法は?

分類Dev

ズームした画像のビューを矢印キーで移動するにはどうすればよいですか?

分類Dev

矢印キーを使用してJavaアプレットでキーリスナーを使用する方法

分類Dev

WASDを使用してキャンバス上を移動するという単純なタスクを実行するが、移動しないプレーヤーオブジェクトを作成しようとしています。

分類Dev

矢印キーで特定のdivを移動させる方法(ボタンをクリックして指定)

分類Dev

Ctrl キーと矢印キーを使用して移動すると奇妙な文字が表示される

分類Dev

Angularのキーアップで矢印キーを使用する

分類Dev

LinuxでJavaアプリケーションを使用してテンキーの矢印を操作する方法

分類Dev

javascriptを使用して矢印キーを使用してオブジェクトを移動する方法

分類Dev

SHIFT +矢印キーを設定してemacsプレリュードのテキストを選択する

分類Dev

矢印キーを使用してpythonsinput()プロンプトでテキストカーソルをナビゲートする方法

分類Dev

矢印キーで複数行のコマンドを表示する方法は?

分類Dev

Pythonのpynputを介して矢印キーを追跡およびシミュレートする方法

分類Dev

jSを使用したdiv内で矢印キーを使用して画像を移動する

分類Dev

ループに渡される矢印関数のパラメーターでforループイテレーターを使用できますか?

分類Dev

libGDXを使用してキーボードのキーでスプライトを移動する方法は?

Related 関連記事

  1. 1

    SDL2矢印/ WASDキーをプレーヤーの動きに変換するための最良/最も確実な方法は何ですか?

  2. 2

    キーボードの矢印とmouseEventを使用して、Javaでグラフィックを移動します

  3. 3

    エスケープキーを使用してメインメニューのビューモードと再生ビューモードを切り替えたり、カメラを移動したりするにはどうすればよいですか?

  4. 4

    Javaアプレットを使用して矢印キーでボールを移動する

  5. 5

    矢印キーのフォーカスをボタンの代わりにプレーヤーの移動に変更する

  6. 6

    WPFでシートごとに複数ページのDocumentViewerを使用してドキュメントをプレビューする方法

  7. 7

    矢印キーを使用してマウスカーソルを移動する方法

  8. 8

    スーパービュー境界内のサブビューの移動を制限する

  9. 9

    上矢印キーと下矢印キーを使用してオブジェクトを移動するときに、別のオブジェクトをx軸に沿って移動させるにはどうすればよいですか?

  10. 10

    jQueryの矢印キーを使用してテーブルの行を移動する

  11. 11

    アクセス可能なメニュー(html)、タブキー、または矢印キーでフォーカスを移動するための現在のベストプラクティスは何ですか?

  12. 12

    初めてセルに入力するときに「左矢印」キーを使用してカーソルを移動する方法

  13. 13

    Java GUI:WASDキーを使用してボールを移動する方法は?

  14. 14

    矢印キーを押してキャンバスhtml5上の画像を移動する方法は?

  15. 15

    ズームした画像のビューを矢印キーで移動するにはどうすればよいですか?

  16. 16

    矢印キーを使用してJavaアプレットでキーリスナーを使用する方法

  17. 17

    WASDを使用してキャンバス上を移動するという単純なタスクを実行するが、移動しないプレーヤーオブジェクトを作成しようとしています。

  18. 18

    矢印キーで特定のdivを移動させる方法(ボタンをクリックして指定)

  19. 19

    Ctrl キーと矢印キーを使用して移動すると奇妙な文字が表示される

  20. 20

    Angularのキーアップで矢印キーを使用する

  21. 21

    LinuxでJavaアプリケーションを使用してテンキーの矢印を操作する方法

  22. 22

    javascriptを使用して矢印キーを使用してオブジェクトを移動する方法

  23. 23

    SHIFT +矢印キーを設定してemacsプレリュードのテキストを選択する

  24. 24

    矢印キーを使用してpythonsinput()プロンプトでテキストカーソルをナビゲートする方法

  25. 25

    矢印キーで複数行のコマンドを表示する方法は?

  26. 26

    Pythonのpynputを介して矢印キーを追跡およびシミュレートする方法

  27. 27

    jSを使用したdiv内で矢印キーを使用して画像を移動する

  28. 28

    ループに渡される矢印関数のパラメーターでforループイテレーターを使用できますか?

  29. 29

    libGDXを使用してキーボードのキーでスプライトを移動する方法は?

ホットタグ

アーカイブ