スマホ向けアプリで利用されるVirtual Joystickで有名なフリーアセット「JOYSTICK PACK」がとても使い易くて申し分ないのですが、どうしても気になった事があったので書きます。
気になった事
Dynamic Joystick もしくは Floating Joystickを選択した時、ゲーム開始時の一押し目でいきなり動いてしまう+条件によってはJoystickの画面が表示されない。(一度、指を離して再度画面を押すと思い通りに動く)
上記症状は以下の条件で発生しました。
- Canvas のRender Modeが「Screen Space – Camera」
- Dynamic Joystick(Floating Joystick)のAxis OptionsがBoth以外だと(一押し目で)Joystickの画面が表示されない
原因は一番最初に画面をタッチした時にCameraの設定がされていないためでした。
以下のように修正しました。
// Assets ≫ Joystick Pack ≫ Scripts ≫ Base ≫ Joystick.cs
protected virtual void Start()
{
HandleRange = handleRange;
DeadZone = deadZone;
baseRect = GetComponent<RectTransform>();
canvas = GetComponentInParent<Canvas>();
if (canvas == null)
Debug.LogError("The Joystick is not placed inside a canvas");
Vector2 center = new Vector2(0.5f, 0.5f);
background.pivot = center;
handle.anchorMin = center;
handle.anchorMax = center;
handle.pivot = center;
handle.anchoredPosition = Vector2.zero;
// 追加部分
cam = null;
if (canvas.renderMode == RenderMode.ScreenSpaceCamera)
cam = canvas.worldCamera;
}
コメントを残す