【问题标题】:Unity Movement Touch统一运动触摸
【发布时间】:2014-02-22 15:07:21
【问题描述】:

我正在制作一个类似足球点球的游戏,我也需要在移动设备上移动球。我现在正在使用此代码:

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#...

【问题讨论】:

    标签: c# unity3d touch


    【解决方案1】:

    从使用轴切换到触摸会有点困难。我建议阅读有关 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 轴方向是否与触摸输入相对应。还要注意屏幕坐标和游戏内坐标,因为它们差别很大。起初这看起来令人生畏,但通过一些工作,我保证它不会太糟糕!希望这会有所帮助!

    【讨论】:

    • 这,嗯,很难。我不能只放 4 个按钮(w、a、s、d)并检查它们吗?请帮忙!
    • 是的,不幸的是触摸输入不是很容易——但也不是不可能!您可以创建按钮并告诉它们朝一个方向移动。签出:youtube.com/watch?v=tEU8rDbMxqM。您仍然需要知道触摸何时开始以及何时结束——但这很容易做到(比检测滑动方向要容易得多)。
    • 接受为答案(并添加了下载和 youtube 链接)
    猜你喜欢
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多