<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-BR">
	<id>https://wiki.brdoom.org/index.php?action=history&amp;feed=atom&amp;title=Polyobject</id>
	<title>Polyobject - Histórico de revisão</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.brdoom.org/index.php?action=history&amp;feed=atom&amp;title=Polyobject"/>
	<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Polyobject&amp;action=history"/>
	<updated>2026-04-14T19:55:03Z</updated>
	<subtitle>Histórico de revisões para esta página neste wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.brdoom.org/index.php?title=Polyobject&amp;diff=222&amp;oldid=prev</id>
		<title>MegaManx3: Criou página com &#039;{{doomwiki|link=Polyobject|name=polyobject}}Como o uso de um {{dw|BSP}} pré-calculado para renderização força a geometria vertical do mapa a permanecer constante, é impossível mover uma estrutura nos eixos X e Y no vanilla Doom. O ZDoom resolve isso oferecendo &#039;&#039;&#039;PolyObjects&#039;&#039;&#039;. Um PolyObject normalmente consiste em um grupo de linhas unilaterais (one-sided) conectadas, contidas dentro de um único subsector.  == Criando polyobjects simples ==  Fazer um polyobj...&#039;</title>
		<link rel="alternate" type="text/html" href="https://wiki.brdoom.org/index.php?title=Polyobject&amp;diff=222&amp;oldid=prev"/>
		<updated>2026-03-15T18:05:16Z</updated>

		<summary type="html">&lt;p&gt;Criou página com &amp;#039;{{doomwiki|link=Polyobject|name=polyobject}}Como o uso de um {{dw|BSP}} pré-calculado para renderização força a geometria vertical do mapa a permanecer constante, é impossível mover uma estrutura nos eixos X e Y no &lt;a href=&quot;/index.php/Vanilla_Doom&quot; title=&quot;Vanilla Doom&quot;&gt;vanilla Doom&lt;/a&gt;. O ZDoom resolve isso oferecendo &amp;#039;&amp;#039;&amp;#039;PolyObjects&amp;#039;&amp;#039;&amp;#039;. Um PolyObject normalmente consiste em um grupo de linhas unilaterais (one-sided) conectadas, contidas dentro de um único subsector.  == Criando polyobjects simples ==  Fazer um polyobj...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{doomwiki|link=Polyobject|name=polyobject}}Como o uso de um {{dw|BSP}} pré-calculado para renderização força a geometria vertical do mapa a permanecer constante, é impossível mover uma estrutura nos eixos X e Y no [[vanilla Doom]]. O ZDoom resolve isso oferecendo &amp;#039;&amp;#039;&amp;#039;PolyObjects&amp;#039;&amp;#039;&amp;#039;. Um PolyObject normalmente consiste em um grupo de linhas unilaterais (one-sided) conectadas, contidas dentro de um único subsector.&lt;br /&gt;
&lt;br /&gt;
== Criando polyobjects simples ==&lt;br /&gt;
&lt;br /&gt;
Fazer um polyobject é bem simples, embora possa parecer difícil no começo. Depois que você pega o jeito, dá pra fazer vários rapidinho.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:Poly01.png|right]]||Primeiro precisamos do mapa em si. Vamos fazer uma porta deslizante como polyobject (provavelmente o tipo mais fácil), então vamos precisar de duas salas com teto a 192 e um corredor central (onde os polys vão aparecer) com teto a 128. Todos os pisos ficam na altura 0.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Poly02.png|right]]||Depois você precisa construir os polyobjects. Eles devem ficar em um setor “dummy” ou em algum lugar inacessível, porque o espaço que eles ocupam no mapa normalmente ainda é considerado bloqueado, o que pode causar situações indesejadas — por exemplo, uma porta giratória que, ao abrir, deixa uma barreira invisível no lugar. Além disso, os setores de “armazenamento” serão automaticamente ocultados no [[automap]].&lt;br /&gt;
&lt;br /&gt;
Note que os polyobjects são colunas “sólidas” de vazio, compostas apenas por linedefs de 1 lado (one-sided).&lt;br /&gt;
&lt;br /&gt;
As linhas marcadas em amarelo devem ter o special &amp;lt;tt&amp;gt;[[Polyobj_StartLine]]&amp;lt;/tt&amp;gt;, que recebe três argumentos: o número do polyobject, o polyobject espelhado (mirror) e o som que ele faz enquanto se move (definido em [[SNDSEQ]]). Para o poly de cima, use o número 0; e para o de baixo, use o número 1 (mas qualquer número serviria). Como esses polys vão espelhar um ao outro (as ações serão as mesmas, só que invertidas — por exemplo, o poly1 abre para a direita e o poly0 abre para a esquerda), você deve colocar o número do poly “oposto” no segundo campo. O som não é importante agora, então deixe 0.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Poly03.png|right]]||Agora você precisa colocar as âncoras (polyobject anchors) e os start spots. Eles determinam onde os polyobjects realmente vão aparecer no mapa. Primeiro coloque as âncoras, que têm DoomEdNum 9300. Elas devem ficar dentro dos polyobjects do jeito que você desenhou no mapa (ou perto da borda), como na imagem. A coisa mais importante das âncoras é o ângulo, que deve corresponder ao número do polyobject. Então a âncora de cima tem ângulo 0 e a âncora de baixo tem ângulo 1.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Poly04.png|right]]||Em seguida, coloque os start spots. Eles são colocados de forma parecida com as âncoras: em um local onde você quer que o polyobject apareça no jogo, relativo à âncora. Neste caso, colocamos a âncora no centro do poly, então queremos o start spot no centro de onde queremos que o poly apareça, como mostrado na imagem. Start spots têm DoomEdNum 9301, 9302 ou 9303:&lt;br /&gt;
:&amp;#039;&amp;#039;&amp;#039;9301:&amp;#039;&amp;#039;&amp;#039; Polyobject normal — ele aborta o movimento se colidir com um ator.&lt;br /&gt;
:&amp;#039;&amp;#039;&amp;#039;9302:&amp;#039;&amp;#039;&amp;#039; Polyobject “crush” — ele continua movendo e os atores no caminho são esmagados.&lt;br /&gt;
:&amp;#039;&amp;#039;&amp;#039;9303:&amp;#039;&amp;#039;&amp;#039; Polyobject “harmful” — ele causa dano ao toque mesmo antes do ator ser esmagado.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:poly05.png|right]]||Aqui temos a configuração completa. Note que desde o ZDoom 2.5.0, é possível ter geometria complexa para polyobjects e fazer eles se moverem para qualquer lugar do mapa. Versões anteriores tinham limitações rígidas sobre o que um polyobject podia ser e fazer. Como este exemplo já é antigo, ele mostra uma configuração bem simples.&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Poly06.png|right]]||Por fim, você provavelmente quer que os polyobjects realmente abram. Isso é bem simples: dê às “laterais largas” dos polyobjects o special &amp;lt;tt&amp;gt;[[Polyobj_DoorSlide]]&amp;lt;/tt&amp;gt;, com os argumentos 0, 32, 128, 64, 105 — que são: número do polyobject, velocidade do movimento, [[angle|ângulo]], distância a mover e o atraso antes dos polys voltarem à posição original (em [[tic]]s; 105 são 3 segundos, pois são 35 tics por segundo). Você não precisa se preocupar com o polyobject 1 neste caso, porque ele vai espelhar tudo o que o polyobject 0 fizer. Pronto — terminou!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* [[:Image:Polyexample.zip|Baixar o WAD de exemplo (729 bytes)]]&lt;br /&gt;
&lt;br /&gt;
== Criando polyobjects avançados ==&lt;br /&gt;
Embora os polyobjects simples acima sejam suficientes na maioria dos casos, às vezes não dá. Por exemplo: e se você quiser um polyobject “vazado/see-through”? Nesse caso, você vai precisar usar linedefs de dois lados (two-sided). Porém, o engine não consegue criar o polyobject automaticamente nesses casos, então você precisa usar [[Polyobj_ExplicitLine]] em cada linha do polyobject.&lt;br /&gt;
&lt;br /&gt;
# Construa seu polyobject em um setor de “armazenamento” como antes, mas transforme-o em um setor autorreferente (os dois lados do polyobject pertencem ao setor de armazenamento).&lt;br /&gt;
# Cada linha do polyobject deve ser marcada com Polyobj_ExplicitLine. Para a ordem de renderização, você pode usar o valor 1 em todas elas, já que esse parâmetro é um resquício da implementação original do &amp;#039;&amp;#039;[[Hexen]]&amp;#039;&amp;#039;.&lt;br /&gt;
# Se você quiser que algumas linhas do polyobject sejam ativáveis, você precisa dar um lineid a elas. No [[Hexen format]], isso é feito por um dos parâmetros do Polyobj_ExplicitLine; no [[UDMF]] isso é uma das propriedades do [[linedef]]. Depois, você vai precisar de um script [[OPEN]] em [[ACS]] chamando [[SetLineSpecial]] no lineid escolhido para atribuir um special diferente.&lt;br /&gt;
# Como o polyobject agora é two-sided, garanta que ele realmente tenha uma textura no middle!&lt;br /&gt;
# O setor de armazenamento deve ter as mesmas alturas de piso e teto do setor de destino — não porque o engine exija, mas porque isso facilita MUITO ajustar os offsets verticais das texturas do polyobject. Use o flag “lower unpegged” se você quer que o polyobject encoste no chão.&lt;br /&gt;
# Dê às linhas do polyobject o flag de &amp;quot;[[3D middle texture]]&amp;quot; para que ele tenha uma caixa de colisão vertical finita. Note que o setor de armazenamento do polyobject será usado como referência para checar se há espaço acima/abaixo dele, e não o setor onde ele realmente está!&lt;br /&gt;
&lt;br /&gt;
== Personalizando o dano de polyobjects ==&lt;br /&gt;
[[Image:Polyobject Damage.png|500px|right]]&lt;br /&gt;
Para mudar o dano exato que polyobjects do tipo “crushing” e “hurts-to-touch” causam a cada toque em um ator, você precisa (no [[Ultimate Doom Builder]] ou no [[Doom_Builder#GZDB-Bugfix|GZDoom Builder (Bugfix)]]) ir na aba Action/Tag/Misc das coisas âncora (anchors) e alterar o valor de health das âncoras — do mesmo jeito que polyobjects são ligados entre si usando o ângulo do start spot e das âncoras.&lt;br /&gt;
&lt;br /&gt;
O health padrão 1 significa que o polyobject usa o dano padrão dele, que é 3. Qualquer valor acima de 1 mata instantaneamente qualquer coisa no caminho. E valores negativos definem o dano exato que o polyobject causa em cada impacto. Por exemplo, health = -10 causa 10 de dano por hit em vez de 3.&lt;br /&gt;
&lt;br /&gt;
== Veja também ==&lt;br /&gt;
* [[Tutorials]]&lt;br /&gt;
&lt;br /&gt;
Para specials relacionados a PolyObjects, veja:&lt;br /&gt;
* [[Polyobj_DoorSlide]]&lt;br /&gt;
* [[Polyobj_DoorSwing]]&lt;br /&gt;
* [[Polyobj_ExplicitLine]]&lt;br /&gt;
* [[Polyobj_Move]]&lt;br /&gt;
* [[Polyobj_MoveTimes8]]&lt;br /&gt;
* [[Polyobj_MoveTo]]&lt;br /&gt;
* [[Polyobj_MoveToSpot]]&lt;br /&gt;
* [[Polyobj_OR_Move]]&lt;br /&gt;
* [[Polyobj_OR_MoveTimes8]]&lt;br /&gt;
* [[Polyobj_OR_MoveTo]]&lt;br /&gt;
* [[Polyobj_OR_MoveToSpot]]&lt;br /&gt;
* [[Polyobj_OR_RotateLeft]]&lt;br /&gt;
* [[Polyobj_OR_RotateRight]]&lt;br /&gt;
* [[Polyobj_RotateLeft]]&lt;br /&gt;
* [[Polyobj_RotateRight]]&lt;br /&gt;
* [[Polyobj_StartLine]]&lt;br /&gt;
* [[Polyobj_Stop]]&lt;br /&gt;
* [[GetPolyobjX]]&lt;br /&gt;
* [[GetPolyobjY]]&lt;br /&gt;
&lt;br /&gt;
Para scripting com PolyObjects:&lt;br /&gt;
* [[PolyWait]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Features]][[Category:Glossary]][[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>MegaManx3</name></author>
	</entry>
</feed>