前回紹介したアセットのスクリプト修正をChatGPT先生のお力添えを借りながら行っていく。(案件じゃないよ)
一応アセット作者にメールで直接問い合わせる手段もあるが、返信までに時間がかかりそうだし、ChatGPTの方針で進める。
「以下のコードをUnityEngine.UIを使って書き換えて下さい。」と命令。
変更箇所だけババっと記す。
Joystick_Script.cs
(変更前)gui.pixelInset.x→(変更後)gui.rectTransfomr.rect.x
(変更前)
gui.pixelInset = new Rect
(
Mathf.Clamp(guiTouchPos.x, guiBoundary.min.x, guiBoundary.max.x),
Mathf.Clamp(guiTouchPos.y, guiBoundary.min.y, guiBoundary.max.y),
gui.pixelInset.width,
gui.pixelInset.height
);
→(変更後)
gui.rectTransform.anchoredPosition = new Vector2
(
Mathf.Clamp(guiTouchPos.x,guiBoundary.min.x,guiBoundary.max.x),
Mathf.Clamp(guiTouchPos.y,guiBoundary.min.y,guiBoundary.max.y)
);
gui.pixelInset = defaultRect;
→
gui.rectTransform.sizeDelta = new Vector2(defaultRect.width, defaultRect.height);
変更前
else if (gui.HitTest(touch.position))
{
shouldLatchFinger = true;
}
→
変更後
else if (RectTransformUtility.RectangleContainsScreenPoint(gui.rectTransform,touch.position))
{
shouldLatchFinger = true;
}
この要領で、Shoot_Script.csとPass_Script.csも進める。
できた結果がコチラッ!
WASDで移動、Zキーでパスらしいです。
どうやってシュート撃つの...
[今回の学び]
RectTransformのrectプロパティは読み取り専用であるため、代わりにsizeDeltaプロパティを使用することができます。
rectTransfomr.rectは読み取り専用です。代わりに、rectTransfomr.anchoredPositonを使用して、RectTransfomrのアンカー位置を調整することができます。