protected virtual LetterObjectView SpawnLetter() { // Spawn! LetterObjectView letterObjectView = Instantiate(livingLetterPrefab); letterObjectView.gameObject.SetActive(true); letterObjectView.transform.SetParent(transform, true); Vector3 newPosition = walkableArea.GetFurthestSpawn(letterGOs); // Find isolated spawn point letterObjectView.transform.position = newPosition; letterObjectView.transform.rotation = Quaternion.Euler(0, UnityEngine.Random.value * 360, 0); //letterObjectView.Init(toAdd.Dequeue()); letterObjectView.Init(AppManager.I.Teacher.GetAllTestLetterDataLL().GetRandomElement()); letterObjectView.gameObject.AddComponent <Rigidbody>().isKinematic = true; foreach (var collider in letterObjectView.gameObject.GetComponentsInChildren <Collider>()) { collider.isTrigger = true; } var characterController = letterObjectView.gameObject.AddComponent <CharacterController>(); characterController.height = 6; characterController.center = Vector3.up * 3; characterController.radius = 1.5f; letterObjectView.gameObject.AddComponent <LetterCharacterController>(); var livingLetter = letterObjectView.gameObject.AddComponent <IntroStrollingLetter>(); livingLetter.factory = this; var pos = letterObjectView.transform.position; pos.y = 10; letterObjectView.transform.position = pos; letters.Add(livingLetter); letterGOs.Add(livingLetter.gameObject); livingLetter.onDropped += (result) => { if (result) { letters.Remove(livingLetter); letterGOs.Remove(livingLetter.gameObject); toDestroy.Enqueue(livingLetter); } if (onDropped != null) { onDropped(letterObjectView.Data, result); } }; return(letterObjectView); }
public StrollingLivingLetter GetLetter(ILivingLetterData data) { for (int i = 0; i < letters.Count; i++) { LetterObjectView lov = letters[i].gameObject.GetComponent <LetterObjectView>(); if (lov.Data.Equals(data)) { return(letters[i]); } } return(null); }
public StrollingLetterFallingState(StrollingLivingLetter letter) : base(letter) { view = letter.gameObject.GetComponent <LetterObjectView>(); }
/// <summary> /// Risen on letter or world match. /// </summary> private void Droppable_OnRightMatch(LetterObjectView _letterView) { AudioManager.I.PlaySfx(Sfx.OK); NextArea(); }
private void Droppable_OnWrongMatch(LetterObjectView _letterView) { AudioManager.I.PlaySfx(Sfx.KO); }