Написал такой код для перемещения персонажа когда он вышел за экран как в Doodle jump.
Можно ли как-то его улучшить? И плохо ли что это в Update?
using UnityEngine;
public class Side : MonoBehaviour
{
[SerializeField] private Transform _oppositePoint; // позиция противоположной стороны
[SerializeField] private Transform _target; // позиция игрока
// transform это позиция этой стороны
[SerializeField] private bool _leftSide;
private void Awake()
{
_leftSide = InitializedSide();
}
private void Update()
{
if(_leftSide)
{
if(transform.position.x > _target.position.x)
{
MoveToOppositePoint();
}
}
else
{
if (transform.position.x < _target.position.x)
{
MoveToOppositePoint();
}
}
}
private bool InitializedSide() => transform.position.x<_oppositePoint.position.x;
private void MoveToOppositePoint() => _target.position = new Vector2(_oppositePoint.position.x, _target.position.y);
}
Примерно такой же код для того чтобы когда игрок упал в низ за экран, то игра перезапустилась.
using UnityEngine;
using UnityEngine.SceneManagement;
public class DeadPoint : MonoBehaviour
{
[SerializeField] private Transform _target;
private void Update()
{
if(_target.position.y <= transform.position.y)
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
}
}