我有使角色(游戏对象)向右移动的脚本。
当他到达右边界时我该如何制作,并且角色开始向左移动并播放另一个动画(向左移动)?
这是我的角色左右移动的脚本
void MovementRight()
{
_character.transform.Translate (Vector2.right 100f Time.deltaTime);
}
void MovementLeft()
{
_character.transform.Translate (Vector3.left 100f Time.deltaTime);
}
答案 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.
}
不要使用该代码只是使用这个想法,因为我没有测试它,我只是在这里编码。
我希望它有所帮助。