Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9304

バーチャルパッドアセット『Joystick Pack』で初回タッチ時�のみ描画がズレてしまう

$
0
0

バーチャルパッドを簡単に導入できるアセット、『Joystick Pack』

Fixed Joystick、Floating Joystick、Dynamic Joystick の3つのタイプのバーチャルパッドを導入できます。 が、Floating JoystickCanvasのRenderModeがScreenSpaceCameraの時に使用すると、初回のタッチ時にパッドの描画位置がズレます。(Joystick Pack Version2.1)

パッドの描画位置算出時に使用する、カメラの参照がnullであるために起こるようなので、OnDrag内でカメラオブジェクトを取得している部分を、Start内に移動させることで対応できました。

Joystick.cs
protectedvirtualvoidStart(){HandleRange=handleRange;DeadZone=deadZone;baseRect=GetComponent<RectTransform>();canvas=GetComponentInParent<Canvas>();if(canvas==null)Debug.LogError("The Joystick is not placed inside a canvas");Vector2center=newVector2(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;}publicvoidOnDrag(PointerEventDataeventData){-cam=null;-if(canvas.renderMode==RenderMode.ScreenSpaceCamera)-cam=canvas.worldCamera;Vector2position=RectTransformUtility.WorldToScreenPoint(cam,background.position);Vector2radius=background.sizeDelta/2;input=(eventData.position-position)/(radius*canvas.scaleFactor);FormatInput();HandleInput(input.magnitude,input.normalized,radius,cam);handle.anchoredPosition=input*radius*handleRange;}

Viewing all articles
Browse latest Browse all 9304

Trending Articles