Доброго времени суток!
Подскажите, как нужно загружать одну и ту же сцену с разным положением игрока? Средство запуска - простейшее меню с 3 кнопками для загрузки в точку 1, точку 2 и выхода из программы (сцена меню). Я сделал статическую переменную:
using UnityEngine;
public static class GameStartValues
{
public static Vector3 playerPosition;
}
в сцене меню к кнопке (к каждой) к свойству OnClick привязан пустой объект, к которому привязан скрипт (к каждой свой, например, к точке _PlayVineyard:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class PlayVineyard : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
public void StartPlay()
{
Cursor.visible = false;
GameStartValues.playerPosition = new Vector3(249.0f, 31.255f, 177.33f);
SceneManager.LoadScene("Episod_I");
}
}
к точке _PlayHouse такой же, но с соответствующим именем класса и другими координатами, сцена та же.
И, наконец, в методе Start скрипта FirstPersonController к объекту FPSController (взят из стандартных ассетов, структура не менялась: FPSController -FirstPersonCharacter - Main Camera) указано:
this.transform.position = GameStartValues.playerPosition;
Debug.Log("X = "+ this.transform.position.x.ToString());
Debug.Log("Y = "+ this.transform.position.y.ToString());
Debug.Log("Z = "+ this.transform.position.z.ToString());
Debug.Log(this.name);
Выводимые в логе координаты соответствуют заданным нажатой кнопкой, имя объекта-владельца этих координат правильное - FPSController, но контроллер (персонаж) все равно стартует на том же месте, где он находится в редакторе (это третья точка, не совпадающая ни с 1, ни со 2). Что я делаю не так?