マウスカーソルが画面外に出ないようにする試み

投稿日時

2020/05/23 09:18

最終更新

2020/05/23 22:48

想定プレイ時間

未設定

閲覧数

406

評価数(旧)

0

評価数

0

コメント数

0

このゲームはPC以外では動かない可能性が高いです
それでも開いてみる

スポンサーリンク

ゲーム情報

操作方法

※修正しました
※スプライトを使う方法だと画面スクロールでカーソルが置いてけぼりになったのでCanvasにRawImageで描画することにしました。

マウスカーソルが画面外に出ないようにする、Cursor.lockStat=CursorLockMode.Confined は、WebGLでは使えないのでゴリ押ししてみた。
要は、マウスカーソルをロックモードで動かなくしつつGetAxisで移動量を取得、疑似的に用意したカーソル(Canvasに置いたRawImage)を動かすというものだ。
欠点として、UIを触ることができないということが挙げられる。
スプライトなどで、自力で実装する必要があるだろう。
悲しい。

■unitypackage

https://title-nai.up.seesaa.net/image/MouseLock.zip

紹介文

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));
}
}

URL、ゲームタイトル、作者名(コピー用)

評価する

みんなの評価

コメント

コメントを残すには、ログインが必要です。新規ユーザー登録 / ログイン

スポンサーリンク