Discuss Scratch

AdrielCrafter
Scratcher
500+ posts

GUIA: Básicos de projetos com apenas um ator utilizando clones.

Projetos com 1 ator só é um desafio que muita gente participa. Eu não sou excessão.
Mas, recentemente eu vi um tópico sobre clones feito pelo(a) VOUJOUN, e isso me deu a idéia de passar meu conhecimento sobre como eu faço projetos com um ator só.
Também recomendo checar o artigo sobre clones na Scratch Wiki.

Mas afinal, como se faz um projeto desses, com clones, claro, eu não entrei nesse tópico a toa.

O que são clones?
____________________________________________________________________________________

Clones são cópias de um ator, com mesmos sons, fantasias, variáveis, e etc. Mas eles podem ter códigos, váriaveis e listas independentes do ator principal.
Clones também podem receber mensagens de outros atores, do próprio ator ou de outro clone.

quando eu começar como um clone :: control hat // Esse bloco é acionado assim que o clone é criado. O ator principal não é afetado.
... :: stack gray

apague este clone :: control cap // Apaga o clone que executar esse código.

Criando um clone e fazendo ele executar ações independentes
____________________________________________________________________________________

Primeiro precisamos de um projeto de exemplo. Eu vou utilizar o PSXmit 1sBIOS como exemplo.
Vamos animar a sequência de abertura do PlayStation 1.



O fundo se manterá parado por toda a abertura. Enquanto o triângulo 1 e 2 irão se mover para montar o logotipo.
Devemos criar clones para os 3 objetos destacados na imagem.
Crie as 3 fantasias necessárias para os objetos. Recomendo que você pegue as imagens deste projeto.
Iremos precisar que os clones utilizem fantasias diferentes para detectar o que fazer posteriormente.

quando @greenFlag for pressionado :: hat events
esconda :: looks // não queremos que nosso ator principal apareça, apenas os clones
mude para a fantasia [fundo v] :: looks
crie clone de [este ator v] :: control
mude para a fantasia [triangulo 1 v] :: looks
crie clone de [este ator v] :: control
mude para a fantasia [triangulo 2 v] :: looks
crie clone de [este ator v] :: control
mude para a fantasia [vazio v] :: looks // Use isto para diferenciar as fantasias e não causar conflitos em casos de transmissões de mensagens. Isso é opcional.

O fundo deverá ficar parado, enquanto os outros triângulos devem se mexer, então:

quando eu começar como um clone :: hat control
se <(fantasia [nome v] :: looks) = [fundo] :: operators> então {
mostre :: stack looks
vá para x: [0] y: [0] :: motion
} :: control
se <(fantasia [nome v] :: looks) = [triangulo 1] :: operators> então {
... :: gray
} :: control
se <(fantasia [nome v] :: looks) = [triangulo 2] :: operators> então {
... :: gray
} :: control

Ok, mas, e o código de movimento?? Bom, se copiarmos daquele projeto (PlayStation 1 Startup), no “triangulo1” devemos colocar o código do triângulo esquerdo, que é:

vá para x: [0] y: [0] :: motion
defina o tamanho como [100]% :: looks
mostre :: looks
repita [30] vezes {
mude [-1.7] no tamanho :: looks
adicione [1.28] a y :: motion
adicione [0.3] a x :: motion
} :: control

Também devemos fazer o código do triângulo direito. Devemos apenas inverter o sinal dos comandos de movimento. Também veja: Sobre X e Y.

vá para x: [0] y: [0] :: motion
defina o tamanho como [100]% :: looks
mostre :: looks
repita [30] vezes {
mude [-1.7] no tamanho :: looks
adicione [-1.28] a y :: motion
adicione [-0.3] a x :: motion
} :: control

// O bloco de mudar o tamanho se manterá inalterado.

Agora, é só colocarmos em nosso código completo!

quando eu começar como um clone :: hat control 
se <(fantasia [nome v] :: looks) = [fundo] :: operators> então {
mostre :: stack looks
vá para x: [0] y: [0] :: motion
} :: control
se <(fantasia [nome v] :: looks) = [triangulo 1] :: operators> então {
vá para x: [0] y: [0] :: motion
defina o tamanho como [100]% :: looks
mostre :: looks
repita [30] vezes {
mude [-1.7] no tamanho :: looks
adicione [1.28] a y :: motion
adicione [0.3] a x :: motion
} :: control} :: control
se <(fantasia [nome v] :: looks) = [triangulo 2] :: operators> então {
vá para x: [0] y: [0] :: motion
defina o tamanho como [100]% :: looks
mostre :: looks
repita [30] vezes {
mude [-1.7] no tamanho :: looks
adicione [-1.28] a y :: motion
adicione [-0.3] a x :: motion
} :: control
} :: control

Assim a base da sua animação estará completa. Com isso você pode continuar seu projeto utilizando os básicos disso!
Seu clone também pode responder com ações diferentes dos outros utilizando mensagens! Como por exemplo um dos códigos de som do PSXmit 1sBIOS:

quando eu receber [transition v] :: hat events
se <(fantasia [nome v] :: looks) = [chn_whoosh] :: operators> então {
mude o volume para [50]% :: sound
mude o efeito [tom v] para [-110] :: sound
toque o som [snd_whoosh v] até o fim :: sound
} :: control

Você tem utilidades triplicadas com as funções dos clones do Scratch. Recomendo que você experimente com esse recurso, pois irá te ajudar muito!
Qualquer dúvida, só perguntar.

Veja também:
Eventos por AdrielCrafter
GUIA: Clones por VOUJOUN
Cloning Artigo do Scratch Wiki
Fontes:
Cloning Artigo do Scratch Wiki
VOUJOUN
Scratcher
100+ posts

GUIA: Básicos de projetos com apenas um ator utilizando clones.

Depois eu dou uma olhada
EDIT:Já olhei e ficou muito legal!

Last edited by VOUJOUN (Sept. 6, 2023 13:54:31)

Powered by DjangoBB