使用精灵表重新调整动画制作中的问题 - unity 2d

时间:2017-07-14 21:39:25

标签: animation resize sprite image-resizing unity2d

我有一个我试图调整大小的角色。为了保持一致性,我将默认的空闲动画精灵放在精灵表中较大的精灵旁边。当我在动画窗口中放入较大的精灵(与默认的正常大小动画分开的动画)时,我的角色在空中被冻结,无法触及地面。对于较大的精灵来说,对撞机是编辑的,所以我知道它并不是一个卡在地面上的盒式对撞机。我甚至没有直接在动画窗口中调整它(因为我尝试了它并获得了相同的结果)。有人知道发生了什么吗?

2 个答案:

答案 0 :(得分:0)

我明白了。我无法按照我尝试的方式工作,而是用脚本完成。我提前知道你可以用transform.localScale = new Vector2 (float, float);来增加精灵的大小,但它对我不起作用,因为当我这样做时,由于我的翻转代码,我的x刻度将面向相反的方向。所以我创建了两个名为scaleXscaleY的新浮点数,并为它们赋值。然后我的代码行看起来像这样,

transform.localScale = new Vector2(transform.localScale * scaleX, 
transform.localScale * scaleY);

对于将来可能遇到同样问题的任何人。我正在使用挂载系统。

答案 1 :(得分:0)

@joe-clark 的建议也对我有用。对我来说,这是在为左右设置动画时发生的,而我尝试调整播放器的大小,将默认精灵设置为空闲精灵。

这是我之前的代码:

if (movementX > 0) {
    // Face right
    transform.localScale = new Vector3(1f, 1f, 1f);
} else if (movementX < 0) {
    // Face left
    transform.localScale = new Vector3(-1f, 1f, 1f);
}

这是我修改后的代码,它修复了它:

if (movementX > 0) {
    // Face right
    transform.localScale = new Vector3(Mathf.Abs(transform.localScale.x), transform.localScale.y, transform.localScale.z);
} else if (movementX < 0) {
    // Face left
    transform.localScale = new Vector3(-1 * Mathf.Abs(transform.localScale.x), transform.localScale.y, transform.localScale.z);
}