Um pouco sobre você
Olá, tenho 16 anos e adoro jogar Just Shapes & Beats (JSAB). Um belo dia, aprendi sobre um jogo como o JSAB. Fiquei muito absorvido na parte do jogo, os desenvolvedores criaram mais de 30 níveis a partir de formas geométricas simples - é brilhante! Mas eu não queria jogar assim, queria criar algo meu. E como o JSAB tem um editor de níveis, mas está em testes pré-alfa há mais de 2 anos, e quero fazer níveis, decidi criar meu próprio JSAB. Agora vamos descer ao início.
O começo começou
Como eu queria fazer meu próprio jogo há muito tempo, mas não tinha minhas próprias ideias, decidi fazer um clone do JSAB, mas adicionei algo meu lá. Claro, escolhi o motor Unity, já que já me interessava por ele há muito tempo e tinha pelo menos alguma experiência em trabalhar com ele, embora pequena. Decidi fazer JSAB para dispositivos móveis, pois eu mesmo queria jogar onde quer que estivesse. Inicialmente, o esquema de cores do meu jogo não era parecido com o original, tudo era monocromático.
Tudo parecia assim. Os controles também eram diferentes, o jogador era controlado pelo mouse ou pelo toque na tela e não havia como correr.
Parte técnica
Vamos descer à parte técnica do jogo e começar criando objetos.
Criação de objeto
Todos os objetos foram criados via Instantiate, o que, como descobrimos mais tarde, tem um grande impacto na otimização. Imagine esta situação
public GameObject Obj;
private void Start(){
for(int i = 0; i < 100; i++){
GameObject.Instantite(Obj);
}
}
, , . .
, . , . JSON , , .
{
attacks: [
{
"attackType": "DotCircle",
"time": "1,0828",
"dotCount": "20"
},
{
"attackType": "Beam",
"time": "3,06713",
"width": "50"
}
]
}
JSON Update .
. , , -. . , . Unity
Animation anim = GetComponent<Animation>();
AnimationCurve curve;
// create a new AnimationClip
AnimationClip clip = new AnimationClip();
clip.legacy = true;
// create a curve to move the GameObject and assign to the clip
Keyframe[] keys;
keys = new Keyframe[3];
keys[0] = new Keyframe(0.0f, 0.0f);
keys[1] = new Keyframe(1.0f, 1.5f);
keys[2] = new Keyframe(2.0f, 0.0f);
curve = new AnimationCurve(keys);
clip.SetCurve("", typeof(Transform), "localPosition.x", curve);
// update the clip to a change the red color
curve = AnimationCurve.Linear(0.0f, 1.0f, 2.0f, 0.0f);
clip.SetCurve("", typeof(Material), "_Color.r", curve);
// now animate the GameObject
anim.AddClip(clip, clip.name);
anim.Play(clip.name);
X .
, , . .
, , . , , . C# . , . , , . π 180, , Unity . (AngleInDegree) .
public float AngleInDegree = 90f;
private void Start(){
float cos = Mathf.Cos(AngleInDegree * Mathf.Deg2Rad);
float sin = Mathf.Sin(AngleInDegree * Mathf.Deg2Rad);
}
" "
- . , JSON . (, , ). , . Playable ( , ..) AudioSource' () .
:
, , Chronos ( ).
Já fiz uso total das capacidades da linha do tempo, liguei as teclas do teclado de que precisava aos ataques de que precisava e, assim, fiz os níveis. Também quero agradecer a quem leu isso, espero que tenha sido pelo menos um pouco interessante! Em breve terá a segunda parte, na qual já falarei sobre o que vim em quase 3 meses de desenvolvimento e um pouco sobre o estágio atual de desenvolvimento. Você também pode visitar meu canal para acompanhar o processo de desenvolvimento, e também tenho um servidor discord .