Ejemplo n.º 1
0
    public override bool Act(BrainController brainController)
    {
        var animationEnded       = brainController.animationEventHandler.animationEnded;
        var sameAnimationTrigger = brainController.animationEventHandler.animationTrigger == animationTrigger;

        return(animationEnded && sameAnimationTrigger);
    }
Ejemplo n.º 2
0
        public override void OnInspectorGUI()
        {
            DrawDefaultInspector();
            BrainController controller = (BrainController)target;

            if (GUILayout.Button("Next brains"))
            {
                controller.NextBrains();
            }
        }
Ejemplo n.º 3
0
 void OnTriggerEnter2D(Collider2D col)
 {
     if (col.gameObject.tag == "Brain")
     {
         BrainController other = col.gameObject.GetComponent <BrainController>();
         if (merger == null && (!splitting || !other.splitting))
         {
             if (other.merger == null)
             {
                 mergePos    = (transform.position + col.gameObject.transform.position) / 2f;
                 mergedScale = Vector3.zero;
                 timeMerging = 0;
                 AddMergingBrain(this);
                 merger = this;
                 audio.PlayOneShot(merge);
                 splitting = false;
             }
             else
             {
                 other.merger.AddMergingBrain(this);
                 merger = other.merger;
                 audio.PlayOneShot(merge);
                 splitting = false;
             }
         }
     }
     else if (col.gameObject.tag == "Project")
     {
         if (merger != null)
         {
             merger.AbortMerge();
             audio.PlayOneShot(split);
         }
         else
         {
             if (transform.localScale.x <= 0.7f)
             {
                 GameObject.Instantiate(deathPart, transform.position, Quaternion.identity);
                 GameObject.Destroy(gameObject);
             }
             else
             {
                 GameObject obj = GameObject.Instantiate(gameObject) as GameObject;
                 obj.GetComponent <BrainController>().Split(1);
                 Split(-1);
                 audio.PlayOneShot(split);
             }
             col.gameObject.tag = "Untagged";
             GameObject.Destroy(col.gameObject);
         }
     }
 }
Ejemplo n.º 4
0
 public void AddMergingBrain(BrainController brain)
 {
     mergingBrains.Add(brain);
     startPos.Add(brain.transform.position);
     startScale.Add(brain.transform.localScale);
     if (brain.splitting)
     {
         mergedScale += brain.splitTargetScale * scaleFactor;
     }
     else
     {
         mergedScale += brain.transform.localScale * scaleFactor;
     }
 }
Ejemplo n.º 5
0
    // Use this for initialization
    void Start()
    {
        if (instance == null) {
            instance = this;
            INIT_POS = transform.position;
            INIT_ROT = transform.rotation;
            INIT_DIS = transform.position - GvrViewer.Instance.transform.position;
            zoomPercentage = 1;
            rotationRate = 1;
            itemsVisible = new HashSet<GameObject> ();
            itemsSelected = new HashSet<GameObject> ();

        } else {
            BrainController.Destroy (this);
        }
        foreach(Transform child in transform)
        {
            child.gameObject.AddComponent (typeof(MeshCollider));
            child.gameObject.AddComponent (typeof(BrainItemCtrl));
        }
        rotationRate = 1.0f;
    }
 protected override void DoStart()
 {
     movementController = new MovementController(GetComponent <Rigidbody2D>());
     brainController    = new BrainController(new PlayerInput(), this);
     stateController    = new ExampleStateController().SetUp(new IdleBodyState(), new IdleLegsState(), this);
 }
Ejemplo n.º 7
0
    void Update()
    {
        if (splitting)
        {
            timeMerging         += Time.deltaTime;
            transform.position   = Vector3.Lerp(splitStartPos, splitTargetPos, timeMerging / mergeTime);
            transform.localScale = Vector3.Lerp(splitStartScale, splitTargetScale, timeMerging / mergeTime);
            if (timeMerging >= mergeTime)
            {
                splitting = false;
            }
        }
        else if (merger == null)
        {
            sinceChange += Time.deltaTime;
            RaycastHit2D hit;
            if (dir.x < 0)
            {
                hit = Physics2D.Raycast(transform.position - new Vector3(0.5f, 0, 0), new Vector2(0, -1), Mathf.Infinity, 1 << LayerMask.NameToLayer("Platform"));
            }
            else
            {
                hit = Physics2D.Raycast(transform.position + new Vector3(0.5f, 0, 0), new Vector2(0, -1), Mathf.Infinity, 1 << LayerMask.NameToLayer("Platform"));
            }
            //if (sinceChange >= tillNext)
            if (hit.collider == null)
            {
                dir.x      *= -1;
                sinceChange = 0;
                tillNext    = Random.Range(timeMin, timeMax);
            }

            RaycastHit2D[] hitTest = Physics2D.CircleCastAll(transform.position, 0.5f, -Vector3.up);
            bool           falling = true;
            foreach (RaycastHit2D hitCirc in hitTest)
            {
                if (hitCirc.collider != null && hitCirc.distance <= 0.1f)
                {
                    if (hitCirc.collider.tag == "Platform")
                    {
                        falling = false;
                    }
                }
            }
            if (falling)
            {
                dir.y += gravity * Time.deltaTime;
            }
            else
            {
                dir.y = 0;
            }
            transform.position += new Vector3(dir.x * speed, dir.y, 0) * Time.deltaTime;
        }
        else if (merger == this)
        {
            timeMerging += Time.deltaTime;
            for (int i = 0; i < mergingBrains.Count; i++)
            {
                mergingBrains[i].transform.position   = Vector3.Lerp(startPos[i], mergePos, timeMerging / mergeTime);
                mergingBrains[i].transform.localScale = Vector3.Lerp(startScale[i], mergedScale, timeMerging / mergeTime);
            }
            if (timeMerging >= mergeTime)
            {
                for (int i = 0; i < mergingBrains.Count; i++)
                {
                    if (mergingBrains[i] != this)
                    {
                        GameObject.Destroy(mergingBrains[i].gameObject);
                    }
                }
                mergingBrains.Clear();
                startPos.Clear();
                startScale.Clear();
                merger = null;
            }
        }
        transform.right = new Vector3(-dir.x, 0, 0);
    }
Ejemplo n.º 8
0
 public override void InitAction(BrainController brainController)
 {
     brainController.animationController.TriggerAnimation(animationTrigger);
 }