Unity3d unity2d字符y位置等于bird y位置

Unity3d unity2d字符y位置等于bird y位置,unity3d,position,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

我想让鸟给我的角色硬币,如果角色的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);
    }

}

你已经在评论中自己回答了。角色的y-pos与鸟的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;
    }
}
公共转型目标;
公共游戏机硬币;
private bool_birdGaveCoin=假;
无效更新()
{
transform.Translate(Vector2.left*10f*Time.deltaTime);

如果(transform.position.y答案是放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;
                    }

        }
void更新(){
transform.Translate(Vector2.left*10f*Time.deltaTime);

如果(transform.position.x)是这样的话,这只鸟一直在左飞,一旦y-pos相同,你就会产生硬币。你能给我们一个你的场景的屏幕截图吗?是的,这正是我想要的want@bastingup网站不允许我放图片我不确定是否退出“==”操作员会做这个把戏。所以玩家也可以在鸟的上方?如果是这样,你可能想试试“>=”(如果玩家在鸟的上方),因为浮动非常精确,可能这种情况永远不会发生,因为玩家总是低于或高于0.0001f?那么你还需要一个私人布尔,检查硬币是否已经给过。现在你每秒给100枚硬币(取决于你的帧速率).一切都很好,但当字符y位置等于鸟y位置时,它不会给我任何硬币嘿,兄弟,看起来你的代码只有在我跳得更多时才起作用谢谢,兄弟,因为你我现在知道答案了答案是below@SHOWCASE在您的问题中,您明确要求使用
y位置
,因此您应该接受该位置好男人,不必细说,他自己就知道了