所以我以前的線程顯示,我創建從精靈圖像的gameObject
:拖動和使用此代碼在運行時移動2D遊戲對象
tex = Resources.Load<Texture2D>("pig") as Texture2D;
Sprite sprite = new Sprite();
sprite = Sprite.Create(tex, new Rect(0, 0, 250, 150), new Vector2(0.5f, 0.5f));
GameObject newSprite = new GameObject();
newSprite.AddComponent<Rigidbody2D>();
newSprite.GetComponent<Rigidbody2D>().gravityScale = 0f;
newSprite.AddComponent<ObjectMovement>();
newSprite.AddComponent<SpriteRenderer>();
SR = newSprite.GetComponent<SpriteRenderer>();
SR.sprite = sprite;
正如你看到我添加了一個劇本「ObjectMovement
」,我想檢查這個腳本是否有人拖動這個特定的gameObject
,如果是的話,讓它跟隨觸摸位置,只要提及 - 這個遊戲是2D。我從來沒有使用Rays
或Raycast
,所以我不知道我錯在哪裏。反正這是我的腳本代碼:
public SpriteRenderer selection=null;
void Update()
{
if (Input.touchCount >= 1)
{
foreach (Touch touch in Input.touches)
{
Ray ray = Camera.main.ScreenPointToRay(touch.position);
RaycastHit hit;
switch (touch.phase)
{
case TouchPhase.Began:
if (Physics.Raycast(ray, out hit, 100))
selection = hit.transform.gameObject.GetComponent<SpriteRenderer>();
break;
case TouchPhase.Moved:
selection.transform.position = new Vector2(selection.transform.position.x + touch.position.x/10, selection.transform.position.y + touch.position.y/10);
break;
case TouchPhase.Ended:
selection = null;
break;
}
}
}
}
所以基本上 - 觸摸屏幕時,火ray
,並檢查其gameObject
是在這個位置上,移動手指做時,它遵循它。拖放。謝謝。
編輯:我注意到腳本附在每個gameObject
這是不是有效的,任何想法?
一定要勾選下面 – Fattie
@JoeBlow確保大方回答,他幫助了我很多。我在等待他的意見。 – DAVIDBALAS1