用 2 根手指触摸和移动游戏对象
Touch and move gameobject with 2 fingers
我是 Unity 的新手,我正在尝试构建一种方法,通过 2 根手指触摸沿 x 轴和 z 轴移动场景中的游戏对象。我想出了一个代码,我认为它在逻辑上是正确的,但不符合要求。请指出我的错误并告诉我最好的方法
这是我想出的代码
if (Input.touchCount == 2) {
// Two fingers
Touch touch_1 = Input.GetTouch (0);
Touch touch_2 = Input.GetTouch (1);
mFingerPosition_1 = touch_1.position;
mFingerPosition_2 = touch_2.position;
mMidValue = (mFingerPosition_1 + mFingerPosition_2) / 2;
//is moving
if ((touch_1.phase == TouchPhase.Began)&&(touch_2.phase==TouchPhase.Began))
{
move = true;
}
else if ((touch_1.phase == TouchPhase.Ended)||(touch_2.phase==TouchPhase.Ended))
{
move = false;
}
//if moving
if(move==true)
{
Vector2 Axis = touch_1.position - mFingerPosition_1;
float yAxis = speed * touch_1.deltaPosition.y;
float xAxis = speed * touch_1.deltaPosition.x;
//moving on z axis
if ((Axis.y > 0)||(Axis.y<0))
{
float x = mARObject.transform.position.x;
float y = mARObject.transform.position.y;
float z = mARObject.transform.position.z;
mARObject.transform.position.Set (x,y,yAxis+z);
}
//moving on x axis
else if((Axis.x>0)||(Axis.x<0))
{
float x = mARObject.transform.position.x;
float y = mARObject.transform.position.y;
float z = mARObject.transform.position.z;
mARObject.transform.position.Set (xAxis+x,y,z);
}
}
}
提前致谢
Vector2 Axis = touch_1.position - mFingerPosition_1;
将始终导致增量向量 (0,0),因为 touch_1.position = mFingerPosition_1。而是尝试使用 Touch.deltaPosition
我是 Unity 的新手,我正在尝试构建一种方法,通过 2 根手指触摸沿 x 轴和 z 轴移动场景中的游戏对象。我想出了一个代码,我认为它在逻辑上是正确的,但不符合要求。请指出我的错误并告诉我最好的方法 这是我想出的代码
if (Input.touchCount == 2) {
// Two fingers
Touch touch_1 = Input.GetTouch (0);
Touch touch_2 = Input.GetTouch (1);
mFingerPosition_1 = touch_1.position;
mFingerPosition_2 = touch_2.position;
mMidValue = (mFingerPosition_1 + mFingerPosition_2) / 2;
//is moving
if ((touch_1.phase == TouchPhase.Began)&&(touch_2.phase==TouchPhase.Began))
{
move = true;
}
else if ((touch_1.phase == TouchPhase.Ended)||(touch_2.phase==TouchPhase.Ended))
{
move = false;
}
//if moving
if(move==true)
{
Vector2 Axis = touch_1.position - mFingerPosition_1;
float yAxis = speed * touch_1.deltaPosition.y;
float xAxis = speed * touch_1.deltaPosition.x;
//moving on z axis
if ((Axis.y > 0)||(Axis.y<0))
{
float x = mARObject.transform.position.x;
float y = mARObject.transform.position.y;
float z = mARObject.transform.position.z;
mARObject.transform.position.Set (x,y,yAxis+z);
}
//moving on x axis
else if((Axis.x>0)||(Axis.x<0))
{
float x = mARObject.transform.position.x;
float y = mARObject.transform.position.y;
float z = mARObject.transform.position.z;
mARObject.transform.position.Set (xAxis+x,y,z);
}
}
}
提前致谢
Vector2 Axis = touch_1.position - mFingerPosition_1;
将始终导致增量向量 (0,0),因为 touch_1.position = mFingerPosition_1。而是尝试使用 Touch.deltaPosition