Un peu de vous
Bonjour, j'ai 16 ans et j'adore jouer à Just Shapes & Beats (JSAB). Un beau jour, j'ai découvert un jeu comme JSAB. J'étais très absorbé par la partie gameplay, les développeurs ont créé plus de 30 niveaux à partir de formes géométriques simples - c'est génial! Mais je ne voulais pas jouer comme ça, je voulais créer quelque chose de moi-même. Et comme JSAB a un éditeur de niveau, mais il est en pré-alpha depuis plus de 2 ans, et je veux faire des niveaux, j'ai décidé de créer mon propre JSAB. Passons maintenant au tout début.
Le tout début a commencé
Comme je voulais faire mon propre jeu depuis longtemps, mais que je n'avais pas mes propres idées, j'ai décidé de faire un clone JSAB, mais d'y ajouter quelque chose de moi-même. Bien sûr, j'ai choisi le moteur Unity, car je m'y intéressais depuis longtemps et j'avais au moins une certaine expérience de travail avec lui, bien que petit. J'ai décidé de créer JSAB pour les appareils mobiles, car je voulais moi-même jouer où que je sois. Au départ, la palette de couleurs de mon jeu n'était pas similaire à l'original, tout était monochrome.
Tout ressemblait à ça. Les commandes étaient également différentes, le joueur était contrôlé par la souris ou en touchant l'écran et il n'y avait aucun moyen de se précipiter.
Partie technique
Passons à la partie technique du jeu et commençons par créer des objets.
Création d'objets
Tous les objets ont été créés via Instantiate, ce qui, comme il s'est avéré plus tard, a un impact énorme sur l'optimisation. Imaginez juste cette situation
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'ai déjà pleinement utilisé les capacités de la chronologie, j'ai lié les touches du clavier dont j'avais besoin aux attaques dont j'avais besoin et j'ai donc fait les niveaux. Je veux aussi dire merci à ceux qui ont lu ceci, j'espère que c'était au moins un peu intéressant! Bientôt, il y aura la deuxième partie, dans laquelle je parlerai déjà de ce à quoi je suis arrivé pendant près de 3 mois de développement et un peu du stade actuel de développement. Vous pouvez également visiter ma chaîne pour suivre le processus de développement, et j'ai également un serveur Discord .