动画在Unity中一步一步地移动

时间:2014-07-09 04:26:21

标签: animation unity3d

我必须在Unity中创建动画。动画与Mummy Maze(https://www.youtube.com/watch?v=GR3LlbRKf5w)中的角色相同。

我希望动画会像木乃伊迷宫游戏一样一步一步地移动。

现在,我使用功能

/*targetPosition: position which character will be moved to*/
void Move(Vector3 targetPosition){
    this.transform.position = targetPosition;
}

但它看起来像是传送。它不会自然地移动。

如何帮助我让我的角色自然地一步一步地移动到目标位置,而不是像传送一样。谢谢

2 个答案:

答案 0 :(得分:0)

您需要使用Update模式移动每帧的木乃伊。

public float MoveSpeed = 1; //在检查器中更改此项以更改木乃伊移动的速度

Vector3 targetPosition;

void Move(Vector3 targetPosition)
{
    this.targetPosition = targetPosition;
}

void Update()
{
    transform.position = Vector3.MoveTowards(transform.position, targetPosition, MoveSpeed * Time.deltaTime);
}

答案 1 :(得分:0)

感谢Formic,我必须尝试你的建议。现在,我知道你的想法。我是Unity的新手,所以我想问你另一个问题:

单击鼠标或按下按钮时如何调用多帧?

现在,我在Update()函数上捕获事件鼠标或按钮。所以当我按一次按钮时,我的角色只移动一小段距离。我需要按一下按钮才能让我的角色移动到我想要的位置。

如何通过一个按键将角色移动到目标位置?非常感谢你(请查看我的代码)

public float MoveSpeed = 5.0f;
public float Step = 1.0f; //character move one cell one times - distance cells is 1.0f


void Update()
{
     if (Input.GetKeyUp ("d")) {
         float targetPos = this.transform.position.x + Step; //currentX + Step 
         Vector3 targetPosition = new Vector3(targetPos, this.transform.position.y, this.transform.position.z);

         Move(targetPosition); //call to move
     }
}

void Move(Vector3 targetPosition)
{
     transform.position = Vector3.MoveTowards(transform.position, targetPosition, MoveSpeed * Time.deltaTime);
}