ゲーム紹介
using UnityEngine;
public class MouseCursor : MonoBehaviour
{
public float Sensitivity = 20;
private Vector3 Position;
// Start is called before the first frame update
void Start()
{
Cursor.lockState = CursorLockMode.Locked;
Position = Input.mousePosition;
}
// Update is called once per frame
void Update()
{
Position.x += Input.GetAxis("Mouse X") * Sensitivity;
Position.y += Input.GetAxis("Mouse Y") * Sensitivity;
if (Position.x < 0) Position.x = 0;
if (Position.x > Screen.width) Position.x = Screen.width;
if (Position.y < 0) Position.y = 0;
if (Position.y > Screen.height) Position.y = Screen.height;
transform.position = Position;
//マウス感度変更はホイールで。
if (Input.GetAxis("Mouse ScrollWheel") != 0)
{
Sensitivity += Input.GetAxis("Mouse ScrollWheel") * 2f;
if (Sensitivity < 10f) Sensitivity = 10f;
if (Sensitivity > 40) Sensitivity = 40;
}
}
private void OnGUI()
{
GUILayout.Label("Sensitivity = " + Sensitivity+
"\nscreen position = "+transform.position+
"\nworld position = "+Camera.main.ScreenToWorldPoint(transform.position));
}
}
※修正しました
※スプライトを使う方法だと画面スクロールでカーソルが置いてけぼりになったのでCanvasにRawImageで描画することにしました。
マウスカーソルが画面外に出ないようにする、Cursor.lockStat=CursorLockMode.Confined は、WebGLでは使えないのでゴリ押ししてみた。
要は、マウスカーソルをロックモードで動かなくしつつGetAxisで移動量を取得、疑似的に用意したカーソル(Canvasに置いたRawImage)を動かすというものだ。
欠点として、UIを触ることができないということが挙げられる。
スプライトなどで、自力で実装する必要があるだろう。
悲しい。
■unitypackage
コメント
コメントを残すには、ログインが必要です。 新規ユーザー登録 / ログイン