ユニティでボタン移動のコード
こないだこの移動のコードの処理のアプリ出したんだが
ユニティのプロジェクト容量食うので
マックの容量が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;
}
}
}
この記事が気に入ったらサポートをしてみませんか?