Desarrollando Just Shapes & Beats y cómo empezó todo

Un poco sobre ti

Hola, tengo 16 años y me encanta jugar a Just Shapes & Beats (JSAB). Un buen día me enteré de un juego como JSAB. Estaba muy absorto en la parte del juego, los desarrolladores crearon más de 30 niveles a partir de formas geométricas simples, ¡es brillante! Pero no quería jugar así, quería crear algo propio. Y como JSAB tiene un editor de niveles, pero ha estado en pruebas pre-alfa durante más de 2 años, y quiero hacer niveles, decidí crear mi propio JSAB. Ahora vayamos al principio.





El mismo comienzo comenzó

Como quería hacer mi propio juego durante mucho tiempo, pero no tenía mis propias ideas, decidí hacer un clon de JSAB, pero agregar algo propio allí. Por supuesto, elegí el motor Unity, ya que llevaba mucho tiempo interesado en él y tenía al menos algo de experiencia trabajando con él, aunque pequeña. Decidí hacer JSAB para dispositivos móviles, ya que yo mismo quería jugar donde quiera que estuviera. Inicialmente, el esquema de color de mi juego no era similar al original, todo era monocromático.





Todo se ve así. Los controles también eran diferentes, el jugador era controlado por el mouse o tocando la pantalla y no había forma de correr.





Parte técnica

Vayamos a la parte técnica del juego y comencemos por crear objetos.





Creación de objetos

Todos los objetos se crearon a través de Instantiate, lo que, como se vio más tarde, tiene un gran impacto en la optimización. Solo imagina esta situación





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 ( ).





Ya hice un uso completo de las capacidades de la línea de tiempo, até las teclas del teclado que necesitaba a los ataques que necesitaba y así hice los niveles. También quiero dar las gracias a quienes leyeron esto, ¡espero que al menos haya sido un poco interesante! Próximamente estará la segunda parte, en la que ya hablaré de lo que llegué durante casi 3 meses de desarrollo y un poco sobre la etapa actual de desarrollo. También puedes visitar mi canal para seguir el proceso de desarrollo, y también tengo un servidor de discordia .








All Articles