ユニティでボタン移動のコード

こないだこの移動のコードの処理のアプリ出したんだが
ユニティのプロジェクト容量食うので
マックの容量が500GBしかないので
終わったプロジェクトはマックから断捨離しないと
満タンになってマックが使えなくなるのでここにメモ。

3Dで昔のバイオハザードのような操作感の移動ボタンのそれ。

プレイヤーにアタッチするコード




using UnityEngine;

public class PlayerController : MonoBehaviour
{
public float speed = 10.0f;
public float rotationSpeed = 100.0f;


public bool moveForward = false;
public bool moveBackward = false;
public bool rotateLeft = false;
public bool rotateRight = false;

private Rigidbody rb;
// Singleton instance
public static PlayerController Instance;

// その他のフィールドとメソッド...

void Awake()
{
    // Singleton setup
    if (Instance == null)
    {
        Instance = this;
    }
    else
    {
        Destroy(gameObject);
    }
}
    void Start()
{
    // Rigidbodyコンポーネントを取得します
    rb = GetComponent<Rigidbody>();
}

void FixedUpdate()
{
    // 前進ボタンが押されている場合、前進します
    if (moveForward)
    {
        rb.MovePosition(rb.position + transform.forward * speed * Time.fixedDeltaTime);
    }

    // 後退ボタンが押されている場合、後退します
    if (moveBackward)
    {
        rb.MovePosition(rb.position - transform.forward * speed * Time.fixedDeltaTime);
    }

    // 左回転ボタンが押されている場合、左に回転します
    if (rotateLeft)
    {
        rb.MoveRotation(rb.rotation * Quaternion.Euler(Vector3.up * -rotationSpeed * Time.fixedDeltaTime));
    }

    // 右回転ボタンが押されている場合、右に回転します
    if (rotateRight)
    {
        rb.MoveRotation(rb.rotation * Quaternion.Euler(Vector3.up * rotationSpeed * Time.fixedDeltaTime));
    }
}

// 各ボタンの状態を更新するメソッド
public void SetMoveForward(bool state)
{
    moveForward = state;
}

public void SetMoveBackward(bool state)
{
    moveBackward = state;
}

public void SetRotateLeft(bool state)
{
    rotateLeft = state;
}

public void SetRotateRight(bool state)
{
    rotateRight = state;
}
}

ボタン前後移動と左右に振り向くボタンにアタッチのコード


using UnityEngine;
using UnityEngine.EventSystems;

public class ButtonController : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
    // 操作を受けるプレイヤーのPlayerControllerスクリプトへの参照
    public PlayerController playerController;
    // このボタンがどの種類の操作を表しているかを示す文字列
    public string buttonType;
// ボタンが押されたときに呼び出されるメソッド
public void OnPointerDown(PointerEventData eventData)
{
    switch (buttonType)
    {
        case "Forward":
            playerController.SetMoveForward(true);
            break;
        case "Backward":
            playerController.SetMoveBackward(true);
            break;
        case "Left":
            playerController.SetRotateLeft(true);
            break;
        case "Right":
            playerController.SetRotateRight(true);
            break;
    }
}

// ボタンが離されたときに呼び出されるメソッド
public void OnPointerUp(PointerEventData eventData)
{
    switch (buttonType)
    {
        case "Forward":
            playerController.SetMoveForward(false);
            break;
        case "Backward":
            playerController.SetMoveBackward(false);
            break;
        case "Left":
            playerController.SetRotateLeft(false);
            break;
        case "Right":
            playerController.SetRotateRight(false);
            break;
    }
}
}


この記事が気に入ったらサポートをしてみませんか?