Итак, я делаю игру в единстве и хочу, чтобы мой игрок устанавливал новую позицию касания, когда я нажимаю на экран.
Я создал позицию Vector 2 и сохранил ее в контакте, а затем отладил ее, и она показывает новую позицию.
Итак, у меня работает этот код, мой плеер перемещается в touch.position. Но он тоже собирается на z-as -10, как я могу держать его на нуле. Потому что, когда я использую vector3, он говорит, что не может преобразовать касание в вектор 3.
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
if (Input.GetTouch(0).phase == TouchPhase.Began)
{
// Detect the touch and set object to new location
player.transform.position = Camera.main.ScreenToWorldPoint(touch.position);
Debug.Log(player.transform.position);
}
сохранить плеер, чтобы я мог использовать его позже.
ну прямо перед тем, как объявить Vector2 m_NewPosition .. это не GameObject или игрок, а вектор
у вас уже есть проигрыватель, сохраненный в player, поэтому вы можете повторно использовать его позже .. как сказано, если вы хотите установить положение этого объекта, используйте player.transform.position = m_NewPosition;
правда, я только что посмотрел на сцену, и она перемещается в позицию x: 306.1365 z: 126.7343, это выход за пределы экрана. Как я могу это исправить?





Как говорит ваше исключение
player = m_NewPosition;
не имеет смысла... вы не можете хранить значение Vector2 в поле GameObject.
Насколько я понимаю, вы хотите установить объект в положение, в котором вы коснулись.
Проблема:
touch.positionreturnsThe position of the touch in pixel coordinates.
так что вы не можете просто сделать
player.transform.position = m_NewPosition;
Но нужно преобразовать эту координату экрана в координату в трехмерном мире, например. используя Скринтоуорлдпойнт
// somehow yuo have to define how far away from the camera the object should be placed
// e.g. 1 meter
float distanceTocamera = 1;
player.transform.position = Camera.main.ScreenToWorldPoint(new Vector3(m_NewPosition.x, m_NewPosition.y, distanceTocamera));;
player = m_NewPosition;что должен делать? ты наверное имеешь в видуplayer.transform.position = m_NewPosition;?