タブレットでDragAndDropを使いたくて、最初はELMで試したが、Windowsではうまくいっても、タブレットなどのタッチ操作はいまいち、不完全。
そこで、UnityのWebGLでためしたら、うまくいったが、けっこうはまりどころはあった。ChatGPTからも聞きながら、
コードは、以下のものでよかったが、設定で注意点がある。
そこで、UnityのWebGLでためしたら、うまくいったが、けっこうはまりどころはあった。ChatGPTからも聞きながら、
コードは、以下のものでよかったが、設定で注意点がある。
①Canvas下だとうまく動作しなかった。このへんは、ChatGPTもきづいてくれなかった。常識的なことなのかもしれないが、初心者には盲点。
②オブジェクトにはColliderを追加する。
public class DragAndDrop : MonoBehaviour
{
public GameObject gameObject;
private bool isDragging = false;
private Vector3 offset;
private void OnMouseDown()
{
if (Input.GetMouseButton(0))
{
isDragging = true;
offset = gameObject.transform.position - GetMouseWorldPosition();
}
// Debug.Log("MouseDown");
}
private void OnMouseDrag()
{
if (isDragging)
{
gameObject.transform.position = GetMouseWorldPosition() + offset;
}
}
private void OnMouseUp()
{
isDragging = false;
}
private Vector3 GetMouseWorldPosition()
{
Vector3 mousePosition = Input.mousePosition;
mousePosition.z = Camera.main.nearClipPlane;
return Camera.main.ScreenToWorldPoint(mousePosition);
}
}
Inspector でSprite Renderer>Spriteの欄をSquareにして、その下にcanvasをつけて、図形を描画したものを動かすこともできる。
画像にしたかったら、Spriteの欄に画像PNGなどを持ってくることもできる。
0 件のコメント:
コメントを投稿