Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 public StrollingLetterFallingState(StrollingLivingLetter letter) : base(letter)
 {
     view = letter.gameObject.GetComponent <LetterObjectView>();
 }
Exemplo n.º 4
0
 /// <summary>
 /// Risen on letter or world match.
 /// </summary>
 private void Droppable_OnRightMatch(LetterObjectView _letterView)
 {
     AudioManager.I.PlaySfx(Sfx.OK);
     NextArea();
 }
Exemplo n.º 5
0
 private void Droppable_OnWrongMatch(LetterObjectView _letterView)
 {
     AudioManager.I.PlaySfx(Sfx.KO);
 }