@Cheezy_one

Почему Instantiate иногда создаёт объект не в том месте?

Создаю шутер от первого лица, пули создаю как GameObjectы , не как RayCastы.
Есть строка :
GameObject BulletObj = Instantiate(Bullet, BulletSpawnPoint.position, Quaternion.identity) as GameObject;
Префаб Bullet с нулевой позицией, BulletSpawnPoint стоит там, где надо и никуда не съезжает , но пуля создаётся немного выше места, где должна бы , при этом периодически появляется там ,где надо, а периодически ещё выше , чем обычно(ровно в два раза выше обычно высокого места). Если персонаж идёт - пули снова на своём верном месте , по мере поворота камеры вверх пули будут появляться всё ближе к нужному месту( если смотреть точно в небо - пули будут там ,где и должны). Вся проблема была в скрипте с автоматом , а скрипт пистолета почти дублирует его, поэтому я решил осмотреть разницу - её нет, продублировал сам пистолет - и появилась точно та же проблема(возможно как-то случайно пофиксил её на пистолете раньше и забыл , но смысл в том,что существуют два идентичных пистолета, при этом один багованный, а один- нет). Какие-то манипуляции с положением автомата относительно персонажа не помогли, перемещение BulletSpawnPoint относительно автомата тоже не повлияли. Все строки, кроме instantiate закомментировал ( чтобы пуля просто оставалась на месте, где создалась) - всё равно появляется выше. Учитывая все эти факты, что может быть проблемой и что стоит попробовать?
  • Вопрос задан
  • 237 просмотров
Решения вопроса 1
@Ezekiel4
Охотник на пиратов и сборщик монолитов
Уверен, что проблема в том, что коллайдер пистолета выталкивает коллайдер пули. Это можно проверить в редакторе создав пулю в месте её спавна, а затем, выбрав одновременно пистолет и пулю, посмотреть, не сталкиваются ли их коллайдеры. Проблему можно решить двумя путями:
1) Переместить точку выстрела туда, где точно нет коллайдеров
2) Отменить коллизию. Для этого нужно создать два Layer - для пистолета и пули, затем в Edit/Project Settings/Physics в самом низу есть схема коллизий. Там нужно снять одну галочку, между слоем пули и слоем пистолета.

Если это не помогло, пришлите скрипт оружия и скрипт (если такой есть) пули в комментарий к этому сообщению, посмотрим, мб там что-то влияет.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
MaDestro
@MaDestro
C#, PHP, html
Попробуй использовать отрисовку через RayCast и посмотри на поведение луча.
И вообще лучше делать подобные вещи через рейкаст чем спавнить объекты по сцене...

private Ray _ray;

Debug.DrawRay(_ray.origin, _ray.direction * _maxDistanceRay, Color.red);
Ответ написан
@badzoleen
Проверь в префабе пули ее трансофрмацию, возможно она у тебя не нулевая
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы