左移时如何让角色扮演另一个动画?

时间:2015-02-09 21:30:51

标签: c# unity3d

我有使角色(游戏对象)向右移动的脚本。

当他到达右边界时我该如何制作,并且角色开始向左移动并播放另一个动画(向左移动)?

这是我的角色左右移动的脚本

void MovementRight()
{
    _character.transform.Translate (Vector2.right 100f Time.deltaTime);
}

void MovementLeft()
{
    _character.transform.Translate (Vector3.left 100f Time.deltaTime);
}

1 个答案:

答案 0 :(得分:0)

我建议您使用Animator处理动画,并使Animator中的浮动变量处理水平动画,(因此当向左走动时为-1动画,向右走动时为1动画)。

所以你需要制作3个脚本。 //这将处理动画师从MovingHandler获取角色的速度 AnimationHandler.cs

//这实际上会根据输入处理程序移动角色 MovingHandler.cs

//在这里你会听到输入 InputHandler.cs

为了让角色不会移动到屏幕之外,你需要在MovingHandler上获取屏幕边框并在移动角色之前进行检查,如果它在x中的相同位置作为界限屏幕你会回来;如果它向左移动并且字符是< =而不是左边界然后返回;和右边界相同> =然后返回; 像这样:

Transform charTransform;
float leftHorizontalBound;
float rightHorizontalBound;

void Start()
{
   charTransform = this.transform;
   leftHorizontalBound = camera.ViewportToWorldPoint (new Vector3 (0,0, camera.nearClipPlane)).x;
   rightHorizontalBound= camera.ViewportToWorldPoint (new Vector3 (1,0, camera.nearClipPlane)).x;
}

void Update()
{
   if(charTransform.position.x <= leftHorizontalBound)
   {
      charTransform.position = new vector2(leftHorizontalBound + 0.1f);
      return;
   }
   if(charTransform.position.x >= rightHorizontalBound)
   {
      charTransform.position = new vector2(rightHorizontalBound - 0.1f);
      return;
   }

   //MAKE HERE YOUR MOVEMENT BASED ON INPUT.
}

不要使用该代码只是使用这个想法,因为我没有测试它,我只是在这里编码。

我希望它有所帮助。