首页 > 解决方案 > 我如何在 Unity for android 中操纵立方体

问题描述

我有左键“a”和右键“d”的转向,但我怎样才能改变这个代码来转向win android?我的意思是,如果我单击屏幕左侧,我的立方体将向左移动,当我单击屏幕右侧时,我的立方体将向右侧移动?

 void FixedUpdate () {
    rb.AddForce (0, 0, forwardForce * Time.deltaTime);

    if (Input.GetKey ("d")) {
        rb.AddForce (sidewaysRight * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
    } else if (Input.GetKey ("a")) {
        rb.AddForce (sidewaysLeft * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
    }
}

标签: c#androidunity3d

解决方案


实现这一点的一种简单方法是Overlay Canvas在场景中添加一个并在每一侧放置两个透明图像,每个图像都覆盖应该激活相应转向方向的区域。

然后将EventTrigger组件添加到每个并添加PointerEnterPointerExit事件。

在您的主脚本中,您需要声明在触发事件时将执行的方法。例如:

bool steeringLeft, steeringRight;

public void OnLeftPointerEnter(BaseEventData data)
{
    steeringLeft = true;
}

public void OnLeftPointerExit(BaseEventData data)
{
    steeringLeft = false;
}

public void OnRightPointerEnter(BaseEventData data)
{
    steeringRight = true;
}

public void OnRightPointerExit(BaseEventData data)
{
    steeringRight = false;
}

最后,将这些方法链接到 EventTriggers 中的事件,您就可以开始了:

void FixedUpdate () 
{
    rb.AddForce(0, 0, forwardForce * Time.deltaTime);

    if (steeringRight)
        rb.AddForce (sidewaysRight * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
    else if (steeringLeft)
        rb.AddForce (sidewaysLeft * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
}

注意:但是,我确实相信使用智能手机的陀螺仪实现转向会更酷:)


推荐阅读