我正在为iOS开发一款简单的Unity益智游戏,游戏向用户展示了一个“rubiks cube”对象(一个由小立方体组成的大立方体)。
我希望用户能够在立方体上向左/右/上/下滑动,以按预期旋转。
我的代码可以工作,但是在用户执行第二次旋转后,立方体没有按照用户预期的方向旋转。在第一次旋转后,x/y/z轴已经沿着设备旋转。
如果我只使用左/右滑动代码,它会像预期的那样工作。当我添加上/下滑动代码时,它会中断。这是有道理的,因为当我坚持使用两个变量时,轴不会旋转。
下面是我的代码:
if (Input.GetMouseButtonUp(0))
{
//swipe upwards
if (currentSwipe.y > 0 && currentSwipe.x > -1f && currentSwipe.x < 1f)
{
GameObject.FindGameObjectWithTag("Sfx").GetComponent<SoundManager>().PlaySwipe();
gameObject.transform.DORotateQuaternion(Quaternion.Euler(0f, 0f, 90f), 0.5f).SetRelative(true).OnComplete(SetSwiping);
}
//swipe down
if (currentSwipe.y < 0 && currentSwipe.x > -1f && currentSwipe.x < 1f)
{
GameObject.FindGameObjectWithTag("Sfx").GetComponent<SoundManager>().PlaySwipe();
gameObject.transform.DORotateQuaternion(Quaternion.Euler(0f, 0f, -90f), 0.5f).SetRelative(true).OnComplete(SetSwiping);
}
//swipe left
if (currentSwipe.x < 0 && currentSwipe.y > -1f && currentSwipe.y < 1f)
{
GameObject.FindGameObjectWithTag("Sfx").GetComponent<SoundManager>().PlaySwipe();
gameObject.transform.DORotateQuaternion(Quaternion.Euler(0f, -90f, 0f), 0.5f).SetRelative(true).OnComplete(SetSwiping);
}
//swipe right
if (currentSwipe.x > 0 && currentSwipe.y > -1f && currentSwipe.y < 1f)
{
GameObject.FindGameObjectWithTag("Sfx").GetComponent<SoundManager>().PlaySwipe();
gameObject.transform.DORotateQuaternion(Quaternion.Euler(0f, 90f, 0f), 0.5f).SetRelative(true).OnComplete(SetSwiping);
}
}
任何帮助都是感激的!我是相对新的统一,所以还在学习。
1条答案
按热度按时间0dxa2lsx1#
我认为这样重新考虑设置更容易(至少对我来说):
让我知道这是否可行。