Ein bisschen über dich
Hallo, ich bin 16 Jahre alt und spiele gerne Just Shapes & Beats (JSAB). Eines schönen Tages habe ich etwas über ein Spiel wie JSAB gelernt. Ich war sehr fasziniert vom Gameplay-Teil, die Entwickler haben mehr als 30 Level aus einfachen geometrischen Formen erstellt - es ist brillant! Aber ich wollte nicht einfach so spielen, ich wollte etwas Eigenes kreieren. Und da JSAB einen Level-Editor hat, der sich jedoch seit mehr als 2 Jahren im Pre-Alpha-Test befindet und ich Level erstellen möchte, habe ich beschlossen, meinen eigenen JSAB zu erstellen. Kommen wir jetzt zum Anfang.
Der Anfang begann
Da ich schon lange mein eigenes Spiel machen wollte, aber keine eigenen Ideen hatte, beschloss ich, einen JSAB-Klon zu erstellen, aber dort etwas Eigenes hinzuzufügen. Natürlich habe ich mich für den Motor Unity entschieden, da ich mich schon lange dafür interessiert hatte und zumindest einige Erfahrungen damit hatte, wenn auch klein. Ich habe mich für JSAB für mobile Geräte entschieden, da ich selbst spielen wollte, wo immer ich war. Anfangs war das Farbschema meines Spiels nicht dem Original ähnlich, alles war monochrom.
Es sah alles so aus. Die Steuerung war auch unterschiedlich, der Player wurde mit der Maus oder durch Berühren des Bildschirms gesteuert und es gab keine Möglichkeit zu stürzen.
Technischer Bereich
Kommen wir zum technischen Teil des Spiels und erstellen zunächst Objekte.
Objekterstellung
Alle Objekte wurden über Instantiate erstellt, was, wie sich später herausstellte, einen großen Einfluss auf die Optimierung hat. Stellen Sie sich diese Situation vor
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 ( ).
Ich habe die Funktionen der Timeline bereits voll genutzt, die Tastaturtasten, die ich brauchte, mit den Angriffen verknüpft, die ich brauchte, und damit die Levels erstellt. Ich möchte mich auch bei denen bedanken, die dies gelesen haben, ich hoffe es war zumindest ein wenig interessant! Bald wird es den zweiten Teil geben, in dem ich bereits über das sprechen werde, worauf ich in fast drei Monaten Entwicklungszeit gekommen bin, und ein wenig über den aktuellen Entwicklungsstand. Sie können auch meinen Kanal besuchen , um den Entwicklungsprozess zu verfolgen, und ich habe auch einen Zwietracht-Server .