(C#) Unity2D - 动画对抗我角色的运动?
(C#) Unity2D - Animation Fighting my Character's Movement?
在此先感谢您帮助我解决这个问题。
我有一个由三部分组成的播放器:
body
头部
和手臂
这三个都是单独的精灵。
我已将它们全部归入一个我命名为 "Player"
的空游戏对象下
然后我在 "Player" GameObject 上添加了一个动画,它将 Y 位置从 0 更改为 0.022,然后从 0.022 变回0。
这创建了一个漂亮的小悬停动画,角色在其中上下弹跳。
动画效果非常好!
不过,我还有一个脚本附加到"Player"object,这个脚本叫做"PlayerController"。
在 PlayerController 中,如果玩家按住 A(向左移动)或 D(向右移动),我会更改玩家的 x 位置。
protected bool facingRight = true;
float xPos = 0;
void Update()
{
if (Input.GetKey(KeyCode.D))
{
xPos += 0.01f;
if (!facingRight)
{
Flip();
}
}
else if (Input.GetKey(KeyCode.A))
{
xPos -= 0.01f;
if (facingRight)
{
Flip();
}
}
gameObject.transform.position = new Vector2(xPos, transform.position.y);
}
protected void Flip()
{
facingRight = !facingRight;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
当我按住A或D时,角色拒绝移动。但是他确实翻转正确。
我个人认为我的动画是在和剧本作对,而且动画的优先级比剧本高...?
Here's a video of me explaining my issue
(不确定这个社区是否普遍接受视频。如果不接受,那么我深表歉意)
如果你们能帮我理解发生了什么以及如何纠正它,我将非常感激。
谢谢! :)
在此先感谢您帮助我解决这个问题。
我有一个由三部分组成的播放器: body 头部 和手臂
这三个都是单独的精灵。
我已将它们全部归入一个我命名为 "Player"
的空游戏对象下然后我在 "Player" GameObject 上添加了一个动画,它将 Y 位置从 0 更改为 0.022,然后从 0.022 变回0。 这创建了一个漂亮的小悬停动画,角色在其中上下弹跳。
动画效果非常好!
不过,我还有一个脚本附加到"Player"object,这个脚本叫做"PlayerController"。
在 PlayerController 中,如果玩家按住 A(向左移动)或 D(向右移动),我会更改玩家的 x 位置。
protected bool facingRight = true;
float xPos = 0;
void Update()
{
if (Input.GetKey(KeyCode.D))
{
xPos += 0.01f;
if (!facingRight)
{
Flip();
}
}
else if (Input.GetKey(KeyCode.A))
{
xPos -= 0.01f;
if (facingRight)
{
Flip();
}
}
gameObject.transform.position = new Vector2(xPos, transform.position.y);
}
protected void Flip()
{
facingRight = !facingRight;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
当我按住A或D时,角色拒绝移动。但是他确实翻转正确。
我个人认为我的动画是在和剧本作对,而且动画的优先级比剧本高...?
Here's a video of me explaining my issue
(不确定这个社区是否普遍接受视频。如果不接受,那么我深表歉意)
如果你们能帮我理解发生了什么以及如何纠正它,我将非常感激。
谢谢! :)