В настоящее время я пытаюсь написать сценарий, чтобы мой gameobject/sprite
в Unity
полностью перемещался за пределы экрана, а затем уничтожался. Но на данный момент с моим текущим кодом спрайт не полностью перемещается за пределы экрана.
Вот мой текущий код:
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
. Кто-нибудь знает, как решить проблему?
Спасибо
spriteSize.y/2
— это взрыв в середине спрайта, так что, может быть, простоspriteSize.y
без деления на 2. - person Catwood   schedule 08.04.2015GetComponentInChildren
должно быть простоGetComponent
. Но я бы все равно избавился от деления на 2. - person Catwood   schedule 08.04.2015