public override bool Act(BrainController brainController) { var animationEnded = brainController.animationEventHandler.animationEnded; var sameAnimationTrigger = brainController.animationEventHandler.animationTrigger == animationTrigger; return(animationEnded && sameAnimationTrigger); }
public override void OnInspectorGUI() { DrawDefaultInspector(); BrainController controller = (BrainController)target; if (GUILayout.Button("Next brains")) { controller.NextBrains(); } }
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); } } }
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; } }
// 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); }
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); }
public override void InitAction(BrainController brainController) { brainController.animationController.TriggerAnimation(animationTrigger); }