如何将精灵完全移出屏幕?

How do you move a sprite completely offscreen?

我的 sprite 向左移动,它应该如此,但它停止移动并且没有离开屏幕,正如我希望的那样。就好像有一堵看不见的墙。

我试过了https://www.youtube.com/watch?v=YfIOPWuUjn8

在视频中,人的精灵完全移出了屏幕,但我的没有。

public Sprite Pokemon_0;
public Sprite Pokemon_1; 

void Update()
        {
        if (transform.position.x >= -40) 
        {
            this.gameObject.GetComponent<SpriteRenderer>().sprite = Pokemon_0;
            transform.Translate(-1f,0f,0f);
        }

我正在处理从左侧屏幕移出的精灵,以及从右侧出现并移动到屏幕中央的另一个精灵。该代码不包含有关第二个精灵的任何信息,但这就是我在代码中引用该精灵的原因。

你告诉它只向左移动 if (transform.position.x >= -40)

所以要么改变你的相机,使 x = -40 在你的屏幕之外,要么将布尔表达式中的值减小到低于 -40 的值,以便它向左移动直到停止移动,例如:

if (transform.position.x >= -80f) 
{
    transform.Translate(-1f,0f,0f);
}

此外,GetComponent 是一个昂贵的过程,您只需设置一次精灵,因此您应该创建一个 Start 方法来执行精灵分配。这样,您就不会在每一帧都浪费时间获取相同的组件并分配已经分配给它的精灵。

this.gameObject. 部分是多余的,所以您也可以删除该部分:

Start()
{
    GetComponent<SpriteRenderer>().sprite = Pokemon_0; 
}

只是添加到 Ruzihm 的答案中,您也可以尝试使用

if (GetComponent<Renderer>().isVisible) 
{
    transform.Translate(-1f,0f,0f);
}

而不是使用诸如“-40f”或“-80f”之类的数字,这样您可以确保精灵将离开屏幕。