Я делаю игру для Android / IOS и использую Vector2 для перемещения игрока по диагонали, нажимая / нажимая две кнопки (влево, вправо).Моя проблема в том, что после того, как игрок сталкивается с объектом и умирает, и сцена перезагружается.Значения X, Y равны значениям до перезагрузки, но я хочу, чтобы они были 0, 0.
Я возился с этими тремя сценариями ниже.Это может быть связано с тем, что объект игрока становится неактивным.(Извините, если вы публикуете сообщения в первый раз)
// из скрипта движения игрока
private void Awake()
{
moveChange = new Vector2(0.0f, 0.0f);
}
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void FixedUpdate()
{
Vector3 movement = moveChange * speed * Time.deltaTime;
rb.MovePosition(transform.position + movement);
}
public void ClickR()
{
moveChange = new Vector2(0.5f, 1.0f);
}
public void ClickL()
{
moveChange = new Vector2(-0.5f, 1.0f);
}
// из скрипта столкновения
private void OnTriggerEnter2D(Collider2D other)
{
GameObject e = Instantiate(explosion) as GameObject;
e.transform.position = transform.position;
this.gameObject.SetActive(false);
}
// из скрипта перезагрузки
void Update()
{
if (GameObject.FindWithTag("Player") == null)
{
timer += Time.deltaTime;
if (timer > beforeLoading)
{
Scene scene = SceneManager.GetActiveScene();
SceneManager.LoadScene(scene.name);
}
}
}
Таким образом, объект игрока не перемещается при первой загрузке сцены, как предполагалось, но мгновенно начинает двигаться влево / вправо в зависимости от того, какая кнопка была нажата / нажата до перезагрузки сцены.Я пытался установить значения X, Y в 0f, 0f в функциях Awake () / Start (), а также в OnTriggerEnter, но это не сработало.
Одна вещь, которую я заметил, это то, что если я коснусь где-нибудь еще на экране (android), кроме кнопок, до перезагрузки уровня, игрок не будет двигаться, а X, Y будет равно 0, 0.