团结运动触摸

时间:2014-02-22 15:07:22

标签: c# unity3d touch

我正在制作足球比赛,我需要在移动设备上移动球。我现在正在使用此代码:

float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
rigidbody.AddForce(movement * speed * Time.deltaTime);

如何制作移动系统?

此外,还有其他一些控制球的代码(比如当你传球时(就像保龄球一样)你只能改变它的位置1/10)。但它们基于这段代码......游戏脚本是c#...

1 个答案:

答案 0 :(得分:2)

将此从使用轴切换到触摸将有点困难。我建议阅读Touchscript(http://interactivelab.github.io/TouchScript/)以及API的工作原理。您需要做的是当玩家触摸屏幕时,您缓存该触摸并在他们触摸时通过将他们的第一次触摸与当前位置进行比较来测量移动的方向。通过这样做,您可以获得滑动指示。

这样的事情可以让你开始:

public void OnTouchBegin( object sender, TouchEventArgs e ){
    foreach( TouchPoint point in e.TouchPoints ){
        firstTouchPosition = new Vector2( point.Position.x, point.Position.y );
    }
}

public void OnTouchContinue( object sender, TouchEventArgs e ){
    foreach( var point in e.TouchPoints ){
        secondTouchPosition  = new Vector2( point.Position.x, point.Position.y );
        currentTouchMovement = new Vector2( ( secondTouchPosition.x - firstTouchPosition.x ),
        ( secondTouchPosition.y - firstTouchPosition.y ));
        currentTouchMovement.Normalize( );
    }
}

public void OnTouchEnd( object sender, TouchEventArgs e ){
    hasTouchEnded = true;
}

您需要一些自定义代码来确定X和Y轴方向与触摸输入相对应。屏幕坐标和游戏内坐标也要小心,因为它们相差很大。这一开始看起来令人生畏,但有一些工作我保证不会太糟糕!希望这有帮助!