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

时间:2019-07-17 15:43:27

标签: c# unity3d 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);
        }

我正在处理从屏幕左侧移出的精灵,从右侧出现并移至屏幕中央的精灵。该代码未包含有关第二个Sprite的任何内容,所以这就是为什么我在代码中引用该Sprite的原因。

2 个答案:

答案 0 :(得分:2)

您正在告诉它只能向左if (transform.position.x >= -40)移动。

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

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

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

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

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

答案 1 :(得分:1)

只需添加Ruzihm的答案,您还可以尝试使用

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

通过使用这种方式,您可以确保精灵不在屏幕上,而不是使用数字“ -40f”或“ -80f”。