更新屏幕只能工作一次,然后停止工作||统一

时间:2017-08-24 15:40:49

标签: c# if-statement unity3d position

所以我有一个3x3的游戏板。角色从中间开始。当我向右按下没有任何反应时,当我按下左键时没有任何反应但是当我按下它时会移动到代码中的位置。

void Start()
{
    transform.position = new Vector2(0.28f, -0.27f);
    print(transform.position.x);
}

void Update()
{
    if (ChrP == new Vector2(0.28f, -0.27f))
    {
        if (Mathf.Abs(Input.GetAxisRaw("Right")) > 0.0f)
        {
            transform.position = new Vector2(1.95f, -0.27f);
        }
        if (Mathf.Abs(Input.GetAxisRaw("Left")) > 0.0f)
        {
            transform.position = new Vector2(-1.36f, -0.27f);
        }
        if (Mathf.Abs(Input.GetAxisRaw("Down")) > 0.0f)
        {
            transform.position = new Vector3(0.28f, -1.923f);
        }
        if (Mathf.Abs(Input.GetAxisRaw("Up")) > 0.0f)
        {
            transform.position = new Vector3(0.28f, 1.401f);
        }
        else
        {
        }
    }
}

所以,对于新的“向上”位置,我有相同类型的代码,我检查了一切,但它只是冻结而不是移动。 我的期望是,如果按下按钮,它将检查每一帧。也许我错过了一些东西。 在if语句之前和之后,我都有相同类型的代码,但是对于其他坐标!

1 个答案:

答案 0 :(得分:0)

检查左侧和右侧代码的transform.position功能。您在上下功能中创建了vector2而不是vector3。根据{{​​3}},transform.position占据vector3位置,而不是vector2。修复应该很简单:

if (Mathf.Abs(Input.GetAxisRaw("Right")) > 0.0f)
    {
        transform.position = new Vector3(1.95f, -0.27f);
    }
if (Mathf.Abs(Input.GetAxisRaw("Left")) > 0.0f)
    {
        transform.position = new Vector3(-1.36f, -0.27f);
    }