facebook twitter hatena line email

「Unity/Csharp/オブジェクトをドラッグ」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(unity2020の場合)
 
(同じ利用者による、間の2版が非表示)
行1: 行1:
 +
==unity2020の場合==
 +
 +
<pre>
 +
using UnityEngine;
 +
using UnityEngine.EventSystems;
 +
 +
public class BlockScript : MonoBehaviour, IDragHandler, IDropHandler
 +
{
 +
    public void OnDrag(PointerEventData eventData)
 +
    {
 +
        Vector3 objectPointInScreen = Camera.main.WorldToScreenPoint(eventData.position);
 +
        Vector3 mousePointInScreen = new Vector3(Input.mousePosition.x,
 +
            Input.mousePosition.y,
 +
            objectPointInScreen.z);
 +
        Vector3 mousePointInWorld = Camera.main.ScreenToWorldPoint(mousePointInScreen);
 +
        mousePointInWorld.z = this.transform.position.z;
 +
        this.transform.position = mousePointInWorld;
 +
    }
 +
    public void OnDrop(PointerEventData eventData)
 +
    {
 +
        //Destroy(gameObject);
 +
    }
 +
}
 +
</pre>
 +
上記は、以下の項目と違って、Colliderは不要。
 +
 +
==unity2019?==
 +
unity2020だと以下は動作しなかったので・・
 +
 
画像オブジェクトにColliderをつけ以下コードをアタッチ(Add Component)するとドラッグでオブジェクトが動かせるようになる
 
画像オブジェクトにColliderをつけ以下コードをアタッチ(Add Component)するとドラッグでオブジェクトが動かせるようになる
 
  using System.Collections;
 
  using System.Collections;

2021年4月2日 (金) 01:10時点における最新版

unity2020の場合

using UnityEngine;
using UnityEngine.EventSystems;

public class BlockScript : MonoBehaviour, IDragHandler, IDropHandler
{
    public void OnDrag(PointerEventData eventData)
    {
        Vector3 objectPointInScreen = Camera.main.WorldToScreenPoint(eventData.position);
        Vector3 mousePointInScreen = new Vector3(Input.mousePosition.x,
            Input.mousePosition.y,
            objectPointInScreen.z);
        Vector3 mousePointInWorld = Camera.main.ScreenToWorldPoint(mousePointInScreen);
        mousePointInWorld.z = this.transform.position.z;
        this.transform.position = mousePointInWorld;
    }
    public void OnDrop(PointerEventData eventData)
    {
        //Destroy(gameObject);
    }
}

上記は、以下の項目と違って、Colliderは不要。

unity2019?

unity2020だと以下は動作しなかったので・・

画像オブジェクトにColliderをつけ以下コードをアタッチ(Add Component)するとドラッグでオブジェクトが動かせるようになる

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BlockScript : MonoBehaviour {
	void Start () {
	}
	void Update () {
	}
	void OnMouseDrag()
	{
		Vector3 objectPointInScreen = Camera.main.WorldToScreenPoint(this.transform.position);
		Vector3 mousePointInScreen = new Vector3(Input.mousePosition.x,
			Input.mousePosition.y,
			objectPointInScreen.z);
		Vector3 mousePointInWorld = Camera.main.ScreenToWorldPoint(mousePointInScreen);
		mousePointInWorld.z = this.transform.position.z;
		this.transform.position = mousePointInWorld;
	}
}

参考

http://neareal.com/1230/