Cześć!
W ostatnim czasie bardzo dużą uwagę w projekcie poświęciłem tematowi losowego generowania mapy. Poznałem wiele zagadnień dotyczących tego aspektu. Głównym zagadnieniem o jakim słyszałem był „Automat komórkowy” oraz wiele innych ciekawych dość zaawansowanych algorytmów. Jednak z racji, że jest to nieskomplikowana, mała gra platformowa napisałem własny dość prosty algorytm oparty na instrukcjach warunkowych, który wygląda mniej więcej tak:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Rand : MonoBehaviour { public GameObject GroundPrefab; public GameObject bridge; public GameObject spikes; public int minPlatformSize = 1; public int maxPlatformSize = 10; public int MaxHeight = 3; public int maxDrop = -3; public int platforms = 100; [Range (0.0f, 1f)] public float hazardChance = .5f; [Range (0.0f, 1f)] public float bridgeChance = .1f; private int blockNum = 1; private int blockHeight; private bool ishazard; void Start () { Instantiate(GroundPrefab, new Vector2(0,0), Quaternion.identity); for(int plat = 1; plat< platforms; plat++) { int platformsize=Mathf.RoundToInt(Random.Range(minPlatformSize,maxPlatformSize)); blockHeight=blockHeight+Random.Range(maxDrop,MaxHeight); for(int tiles = 0; tiles<platformsize; tiles++) { Instantiate(GroundPrefab, new Vector2(blockNum, blockHeight),Quaternion.identity); blockNum++; } } } void Update () { } |
Jak na razie generuje tylko podstawowy teren lecz skrypt będzie jeszcze rozwijany.
Udało mi się także rozwiązać problem z żyroskopem, głównie dzięki czytelnikowi o nick’u „Sebastian”, któremu bardzo dziękuję.
Pozwolę sobie zacytować jego komentarz.
„Żyroskopy tak mają, to tak zwany dryf żyroskopu, dlatego nigdy tego typu czujników nie wykorzystuje się samodzielnie a w połączeniu z akcelerometrem i kompasem. Żyroskop służy do mierzenia szybkich zmian kątów, a akcelerometr i kompas do niwelowania dryfu i ustalania pozycji kiedy prędkość obrotowa jest niewielka.
Dobrą referencją mogą być otwarto źródłowe kontrolery lotu, które potrafią sporo wyciągnąć z tego typu czujników.”
Kolejną decyzją podjętą w projekcie jest używanie assetów z internetu ponieważ samemu niestety nie dam rady wszystkiego stworzyć 🙁 Głównie ze względu na brak umiejętności. Oczywiście nie jako wszystkich grafik lecz jakiejś części.
Za tydzień postaram się udostępnić pierwszą wersję projektu.