【发布时间】:2018-06-22 02:15:05
【问题描述】:
正如我之前的线程所示,我正在使用以下代码在运行时从精灵图像创建gameObject:
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,我想检查这个脚本,如果是这样,让它跟随触摸位置,只是提一下 - 这个游戏是二维。我从未使用过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 上,这是无效的,有什么想法吗?
【问题讨论】:
-
请务必勾选下面的慷慨答案
-
@JoeBlow 当然,他帮了我很多。我正在等待他的评论。