问题是我正在根据滑动方向移动我的播放器,但我想在我的播放器向前滑动时移动我的播放器。简单来说
if (swipeDirection == myPlayersForwardDirection)
{
//then move forward
}
else
{
//don't move
}
我尝试了很多东西,但不知道如何比较滑动方向和玩家前进方向。
这是我的滑动代码。
//inside class
Vector2 firstPressPos;
Vector2 secondPressPos;
Vector2 currentSwipe;
public void Swipe()
{
if(Input.GetMouseButtonDown(0))
{
//save began touch 2d point
firstPressPos = new Vector2(Input.mousePosition.x,Input.mousePosition.y);
}
if(Input.GetMouseButtonUp(0))
{
//save ended touch 2d point
secondPressPos = new Vector2(Input.mousePosition.x,Input.mousePosition.y);
//create vector from the two points
currentSwipe = new Vector2(secondPressPos.x - firstPressPos.x, secondPressPos.y - firstPressPos.y);
//normalize the 2d vector
currentSwipe.Normalize();
//swipe upwards
if(currentSwipe.y > 0 currentSwipe.x > -0.5f currentSwipe.x < 0.5f)
{
Debug.Log("up swipe");
}
//swipe down
if(currentSwipe.y < 0 currentSwipe.x > -0.5f currentSwipe.x < 0.5f)
{
Debug.Log("down swipe");
}
//swipe left
if(currentSwipe.x < 0 currentSwipe.y > -0.5f currentSwipe.y < 0.5f)
{
Debug.Log("left swipe");
}
//swipe right
if(currentSwipe.x > 0 currentSwipe.y > -0.5f currentSwipe.y < 0.5f)
{
Debug.Log("right swipe");
}
}
}
要比较两个Vector,最好的解决方案是使用
Vector3.Dot.
这个概念你在高中几何一定很熟悉。无论如何,这就是它的工作原理:
如果两个向量完全在同一方向,则返回
1
如果两个向量垂直,则返回
0
.
如果两个向量相反,则返回
-1
.
其余数字按照对应程度排列
因此,您可以为相对匹配设定一个值,例如
0.9f
。
if (Vector3.Dot(swipeDirection,myPlayersForwardDirection) > .9f)
{
//then move forward
}
else
{
//don't move
}