改变x比例后球员消失

时间:2016-05-01 20:45:55

标签: unity3d

我正在尝试让玩家在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");
    }

每当玩家消失时,也会在盒子对撞机上写下一条消息,上面写着“碰撞器不会造成任何碰撞形状,因为它们都是验证失败的......”

玩家只有在向左或向右移动时才会消失,这真的让我难过,所以我会感激任何帮助。

4 个答案:

答案 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 ......