Raycast
| |
aFriend | Дата: Понедельник, 09 Февраля 2015, 19:28 | Сообщение # 1 |
участник
Сейчас нет на сайте
| Я реализовал стрельбу при помощи рейкстов: Код if(Physics.Raycast (rayStart.transform.position, rayStart.transform.forward, out hit, 10f)){ GameObject bul; bul = Instantiate(bullet, new Vector3(hit.point.x/2,hit.point.y,hit.point.z/2),transform.rotation) as GameObject; bul.transform.localScale = new Vector3(0.05f,0.05f,hit.distance); }
По-плану при столконовении луча со стеной на середине пути, пройденного лучом должен создаваться обьект bullet и растягиваться на расстояние, пройденное лучом. Все растягивается, но помешается он не в середину пути, а немножно смещенно (примерно на 0.3).. В чем трабл?
|
|
| |
MANMANA | Дата: Понедельник, 09 Февраля 2015, 22:01 | Сообщение # 2 |
почти ветеран
Сейчас нет на сайте
| толщина коллайдера/стены 0.5 - 0.6? возможно дело в точке определения столкновения с коллайдером: с центром коллайдера рейкас сталкивается или с передней его поверхностью? стоит прибавлять/вычитать половину толщины стены, при расчете середины?
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
|
|
| |
aFriend | Дата: Понедельник, 09 Февраля 2015, 22:07 | Сообщение # 3 |
участник
Сейчас нет на сайте
| MANMANA, толщина 0.5, с передней стенкой сталкивается, которая, ко всему прочему, находится под углом(но, думаю, это большой роли не играет т.к точка все ровно на том же расстоянии)
|
|
| |
MANMANA | Дата: Понедельник, 09 Февраля 2015, 22:12 | Сообщение # 4 |
почти ветеран
Сейчас нет на сайте
| а в Debug.Log точку испускания луча и точку столкновения луча со стенкой что покажет?
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
|
|
| |
aFriend | Дата: Понедельник, 09 Февраля 2015, 22:23 | Сообщение # 5 |
участник
Сейчас нет на сайте
| вот обьект, который создается и растягивается а тут я немного отодвинул бьект, из которого стреляют начало луча в конце этого маленького прямоугольника(могу заскринить), конец, ясно дело, в начале стены
Добавлено (09 февраля 2015, 22:19) --------------------------------------------- MANMANA, луч нормально кастуется, проверял при помощи такого кода Код Debug.DrawLine (rayStart.transform.position, hit.point);
Добавлено (09 февраля 2015, 22:23) --------------------------------------------- К тому же декаль на стенке создается в положенном месте
Сообщение отредактировал aFriend - Понедельник, 09 Февраля 2015, 22:25 |
|
| |
MANMANA | Дата: Понедельник, 09 Февраля 2015, 22:29 | Сообщение # 6 |
почти ветеран
Сейчас нет на сайте
| попробуй прорисовать луч рейкаста, если этого не пробовал, и посмотри откуда у тебя испускается рейкаст и докуда доходит. у тебя должен испускаться из начала или из конца, прости Господи, маленькой палки? из середины куба? Варианты! 1) не оттуда испускается луч, откуда хочешь. 2) длина луча рейкаста маловата. не могу подглядеть размер куба и расстояние до угла
кста, а Line renderer тут специально не используется для прорисовки линии?
Добавлено (09 февраля 2015, 22:29) --------------------------------------------- bul = Instantiate(bullet, new Vector3( hit.point.x/2 - rayStart.transform.position.x, hit.point.y - rayStart.transform.position.y, hit.point.z/2 - rayStart.transform.position.z), transform.rotation) as GameObject;
плохо голова соображает, но попробую предположить, чтаааааа что-то с координатами стартовой позиции
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
Сообщение отредактировал MANMANA - Понедельник, 09 Февраля 2015, 22:29 |
|
| |
aFriend | Дата: Понедельник, 09 Февраля 2015, 22:52 | Сообщение # 7 |
участник
Сейчас нет на сайте
| MANMANA, не с координатами проблема, а с вычислением середины Еще картинка:
Добавлено (09 февраля 2015, 22:48) --------------------------------------------- Самый последний вектор(из дебага) - Код new Vector3(hit.point.x/2, hit.point.y, hit.point.z/2) Добавлено (09 февраля 2015, 22:52) ---------------------------------------------
Цитата aFriend ( ) bul = Instantiate(bullet, new Vector3( hit.point.x/2 - rayStart.transform.position.x, hit.point.y - rayStart.transform.position.y, hit.point.z/2 - rayStart.transform.position.z), transform.rotation) as GameObject;
С этим вообще трешак получается
Сообщение отредактировал aFriend - Понедельник, 09 Февраля 2015, 22:51 |
|
| |
MANMANA | Дата: Понедельник, 09 Февраля 2015, 23:14 | Сообщение # 8 |
почти ветеран
Сейчас нет на сайте
| вот здесь
bul = Instantiate(bullet, new Vector3(hit.point.x/2,hit.point.y,hit.point.z/2),transform.rotation) as GameObject; вместо hit.point.x/2 у тебя должно быть (hit.point.x минус точка из которой выпущен луч, т.е. Ray start)/2 ты же по умолчанию считаешь, что луч идет из точки 0,0,0 это - не так, у тебя Ray start 0.6, 0.5, 0.6
воть. для остальных координат также, кроме zДобавлено (09 февраля 2015, 23:13) --------------------------------------------- * кроме Y Добавлено (09 февраля 2015, 23:14) --------------------------------------------- bul = Instantiate(bullet, new Vector3((hit.point.x - rayStart.x)/2,hit.point.y,(hit.point.z - rayStart.z)/2),transform.rotation) as GameObject; Добавлено (09 февраля 2015, 23:14) --------------------------------------------- фсе голова не работает у меня
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
|
|
| |
aFriend | Дата: Понедельник, 09 Февраля 2015, 23:18 | Сообщение # 9 |
участник
Сейчас нет на сайте
| MANMANA, ты прав, спасибо! Добавлено (09 февраля 2015, 23:18) --------------------------------------------- Позже репутация будет
|
|
| |
|