Я пытаюсь, чтобы мой игрок приземлился на плитку, и если он приземлится на эту плитку, поместите новую плитку сбоку от плитки, на которую вы приземлились. В настоящее время, как у меня есть, он поместит новую плитку на первую начальную. Я добавил фотографию, чтобы помочь понять, чего я пытаюсь достичь. Белый куб — это игрок, и я хочу, чтобы красная плитка слева от синей была слева от той, на которой я нахожусь.
Как я могу создать префаб на стороне объекта, с которым вы сталкиваетесь?
Ответы (1)
Предположим, что одна плитка занимает одну единицу, тогда если вы хотите, например, разместить плитку:
Слева от игрока:
tile.position = new Vector3(Mathf.RoundToInt(player.position.x) - 1, player.position.y, player.position.z);
Перед игроком:
tile.position = new Vector3(player.position.x, player.position.y, Math.RoundToInt(player.position.z) - 1);
Таким образом, тайлы размещаются на абстрактной сетке с целочисленными координатами.
P.S.: Если ваша плитка занимает более одной единицы, то вам нужно скруглить ее с определенным шагом. Например, если ваш тайл размером 10х10, то необходимо, чтобы координаты были кратны 10. Если вам нужна функция округления с шагом, то можете попросить - скину.
Надеюсь, мне пришла в голову идея.
Кажется, что это определенно сработает, но я очень новичок в этом. Я не уверен, как бы я действительно добавил это.
Попробуйте сделать это после создания плитки: var tile = Instantiate(Object); tile.transform.position = new Vector3(Mathf.RoundToInt(player.position.x) - 1, player.position.y, player.position.z); Где «игрок» — это преобразование куба.
In front of the player
должно быть z + 1
не - 1
;)
Это зависит от того, какая передняя часть камеры. Да и к тому же особой разницы нет, у любого хватит мозгов поменять "-" с "+".
Существует множество руководств по определению мест ударов/столкновений. Попробуйте найти его, так как он охватывает то, что вам нужно