forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Спрайты освещения. (http://forum.boolean.name/showthread.php?t=873)

HorNeS 23.04.2006 23:06

У меня есть спрайт света,когда я его ставлю в угол,то он у меня обрезается полигонами стен. Делал с помощью EntityOrder,но спрайт становится видно отовсюду...хоть за пятьдесят стен. Короче, мне нужно стобы спрайт не был обрезанным возле стен.
Помогите плиз мне решить эту проблему. :(

impersonalis 23.04.2006 23:42

Никак. Твоя вводная обрезает все адекватные варианты решения =/

HorNeS 24.04.2006 00:15

Вложений: 2
Даже с помощью Pick не получится? :(

tormoz 24.04.2006 02:06

Код:

If EntityVisible(sprite)
  EntityOrder sprite,-1
Else
  EntityOrder sprite,0
EndIf

Типа так :rolleyes:

SubZer0 24.04.2006 02:15

а с EntityInView так-же не получится? :)

tormoz 24.04.2006 05:34

Низя.
EntityInView не показывает, загорожен ли объект уровнем.

HorNeS 24.04.2006 14:09

Спасибо, Tormoz !
Все прекрасно работает :ok: !

HorNeS 24.04.2006 15:29

Вложений: 2
Только вот когда загораживаю спрайт другими объектами (рукой,как показано на скриншоте), его становится видно. Это нельзя исправить? :dontknow: Даже ничего в голову не приходит.

tormoz 24.04.2006 16:13

Поставь на руки пицкмоде.
Тогда визибл не будет "видеть" спрайт сквозь нее и отключит ордер
поиграй с радиусом спрайта

Код:

EntityRadius p_spr,rad#; радиус центрального огня
EntityPickMode ruka_c_pistolem,2


.....
If EntityVisible(cam,p_spr)
 *EntityOrder p_spr,-1
Else
 *EntityOrder p_spr,0
EndIf


HorNeS 24.04.2006 17:54

Все равно не скрывается, я думаю дело или в радиусе спрайта,или в загрузке модели пистолета с флагом Anim(но это врядли) .

Вот код создания спрайта:

Код:

Dim lih(2)
For li=1 To 2
lih(li)=LoadSprite ("sprites\light02.png",1)
ScaleSprite lih(li),11,11
EntityRadius lih(li),1;радиус выбирал рандомно
Next


tormoz 24.04.2006 19:39

Во первых:
перебери все чилды аним_меша и назнач пицкмоде, или по имени руки и пистолета найди финдчилдом.
Во-вторых никакого рандома.
создай сферу в месте спрайта и определись с размером радиуса. Сфера для масштаба. по умолчанию у нее радиус 1

HorNeS 24.04.2006 20:46

А перебирать чилды командой GetChild ? Если да, то что надо поставить под словом(в хелпе) index? :wallbash:
GetChild (entity,index)
p.s. Прошу прощения за такие глупые вопросы :@ .

SubZer0 24.04.2006 21:03

цикл по I от 1 до CountChildren ( entity ) и в нем GetChild (entity,I) :)

index это порядковый номер объекта (ребенка).

HorNeS 24.04.2006 21:29

Тоесть:
Код:

For i=1 To CountChildren(entity)
ch=GetChild(entity,i)
Next

Я так понял? Или что-то упустил?

SubZer0 24.04.2006 23:24

Цитата:

Originally posted by HorNeS@24.4.2006, 18:29
Я так понял? Или что-то упустил?
угу, а что? не работает? :)


Часовой пояс GMT +4, время: 16:04.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Перевод: zCarot