Хорошо, я добавил изображение в это описание, чтобы проблема стала понятнее.
У меня есть Parent Object
, который содержит три Blocks
.Родитель имеет объединенную сетку из этих трех блоков.
Игрок (синий круг) способен уничтожать блоки.Для этого у меня есть raycast
, отправка от игрока в направлении, в котором он стоит, и возврат позиции hit.point
.
Когда игрок стоит на Игроке Поз 1, точка попадания может быть что-то вроде X = 0.5
и Z = 0.5
(в этом примере мы игнорируем Y).
Так что мне нужно сделатьчто-то вроде:
float xx = hit.point.x + (1 - (hit.point.x % 1));
затем xx = 1
.
я могу сделать то же самое для z.
Но:
Когда игрок находится в Player Pos 2, это не работает.
Тогда xx будет 4, а не 3 (что будет необходимо).
Я думал о том, чтобы просто проверить, меньше или больше transform.position.x
игрока, чем hit.point.x
, но естьтакже проблема с этим:
, если игрок уничтожает блок при x = 2 z = 1, а затем идет в середине между двумя оставшимися блоками, а затем сталкивается с блоком при x = 1 z= 1 результат будет х = 2, и поэтому он не сможет уничтожить блок с левой стороны.
Если что-то не понятно, мне очень жаль, английский не мойпервый язык.
Надеюсь, кто-нибудь может мне помочь с этим!
