我正在尝试让玩家在Unity中转身,所以我必须将比例尺上的x轴更改为减号,但玩家会这样做消失! 这是我的代码:
void Update ()
{
anim.SetBool ("Grounded", grounded);
anim.SetFloat ("Speed", Mathf.Abs (Input.GetAxis ("Horizontal")));
if (Input.GetAxis("Horizontal") < -0.1f)
{
transform.localScale = new Vector3(1, 1, 1);
}
if (Input.GetAxis("Horizontal") > 0.1f)
{
print ("going right");
}
每当玩家消失时,也会在盒子对撞机上写下一条消息,上面写着“碰撞器不会造成任何碰撞形状,因为它们都是验证失败的......”
玩家只有在向左或向右移动时才会消失,这真的让我难过,所以我会感激任何帮助。
答案 0 :(得分:2)
您想要设置播放器的比例而不是位置。您将玩家y和z缩放设置为零,这将使它们缩小为不可见。试试这个:
if (Input.GetAxis("Horizontal") < -0.1f)
{
transform.localScale = new Vector3(-1, 1, 1);
}
if (Input.GetAxis("Horizontal") > 0.1f)
{
transform.localScale = new Vector3(1, 1, 1);
}
答案 1 :(得分:0)
我对此有一些评论,但我会推迟这些并回答你的问题。
主要是,当您检查水平轴是否小于-0.1f时,将刻度设置为(1,0,0)。这意味着y和z标度为0,这使它消失。你已经在y轴和z轴上做到了无限小。请记住,如果将任何xis上的比例设置为0,则该对象将不再可见。此外,x值的1不会改变角色看起来面对的方式。但是,如果将其更改为-1.0,则该字符将显示为翻转。
其次,但是您可能知道这一点并且正在进行测试,当测试水平轴是否大于0时,您所做的只是打印而且不会做任何事情。
答案 2 :(得分:0)
你的问题是你想要改变玩家的位置,但你实际上并没有在你的代码中改变它。相反,你正在用这一行改变对象的比例(我不确定为什么gjttt1建议这是你想要回答的内容):
transform.localScale = new Vector3(1, 0, 0);
我怀疑你想要的更像是改变位置
transform.position += new Vector3(1, 0, 0);
这会将向量1,0,0添加到当前位置向量
答案 3 :(得分:0)
所以我设法解决了它,事实证明我的精灵已经非常大了所以我必须让sprite更小,所以反过来精灵变得非常小......这么小,以至于盒子对撞机不能;检测它。所以我所要做的就是改变实际的精灵大小(资产中的精灵)。它从18000变为18 ......