0

我目前正在尝试编写脚本gameobject/spriteUnity完全移出屏幕然后被销毁。但是到目前为止,使用我当前的代码,精灵并没有完全移出屏幕。

这是我当前的代码:

void MoveObstacle()
{
    this.transform.position -= new Vector3(this.transform.position.x, speed * Time.deltaTime, this.transform.position.z);

}

void CheckIfOffscreen()
{
    Vector3 spriteSize = this.GetComponentInChildren<Renderer>().bounds.size;
    Debug.Log(spriteSize);

    Vector3 screenPos = Camera.main.WorldToScreenPoint(this.transform.position);

    if(screenPos.y < 0 - spriteSize.y/2)
    {
        this.DestroyObstacle();
    }
}

void DestroyObstacle()
{
    Destroy(gameObject);
}

这段代码的问题是它不会让我的精灵在精灵被破坏之前完全移出屏幕。当一半精灵离开屏幕时它会消失,这不是我想要的行为。

我知道我只是遗漏了一些东西或使用spriteSize不正确。有谁知道如何解决这个问题?

谢谢

4

1 回答 1

0

首先,我相信这条线:

this.transform.position -= new Vector3(this.transform.position.x, speed * Time.deltaTime, this.transform.position.z);

应该:

this.transform.position -= new Vector3(0, speed * Time.deltaTime, 0);

要解决您的问题,请尝试以下操作:

Vector3 screenPos = Camera.main.WorldToScreenPoint(this.transform.position + spriteSize);

if(screenPos.y < 0)
{
    this.DestroyObstacle();
}
于 2015-04-08T15:12:32.453 回答