unity2d字符y位置等于小鸟y位置

时间:2019-02-07 08:14:08

标签: unity3d position

如果字符y的位置等于鸟的y位置,我希望小鸟给我的角色硬币,但是我无法执行此代码

    public Transform target;
public GameObject Coin;

void Update () {
    transform.Translate (Vector2.left * 10f * Time.deltaTime);
    if (transform.position.y == target.position.y) {
        Instantiate (Coin, transform.position, Quaternion.identity);
    }

}

2 个答案:

答案 0 :(得分:1)

您已经在评论中亲自回答了。角色永远不会像鸟一样完全相同的y-pos,因此您必须检查角色是否在鸟上方。试试这个:

public Transform target;
public GameObject Coin;
private bool _birdGaveCoin = false;

void Update()
{
    transform.Translate(Vector2.left * 10f * Time.deltaTime);
    if (transform.position.y <= target.position.y && !_birdGaveCoin)
    {
        Instantiate(Coin, transform.position, Quaternion.identity);
        _birdGaveCoin = !_birdGaveCoin;
    }
}

因此,总结一下:浮点数非常疯狂。这样一来您的角色可以是3.99999f,而鸟则是4.00000f,下一帧则是4.00001f,所以从技术上讲,这是不一样的。

答案 1 :(得分:0)

答案是x而不是y,此代码回答了问题

void Update () {
        transform.Translate (Vector2.left * 10f * Time.deltaTime);
        if (transform.position.x <= target.position.x&&coin==false) {
            Instantiate (EvilEgg, transform.position, Quaternion.identity);
            coin=true;
                    }

        }