// Splits a marshmellow into smaller marshmellows void split() { // Creates a new marshmellow for the player Marshmellow newPlayer = null; if (mellowSize == MellowSize.LARGE) { newPlayer = Instantiate(manager.marshMedium, transform.position, transform.rotation).GetComponent <Marshmellow>(); } else if (mellowSize == MellowSize.MEDIUM) { newPlayer = Instantiate(manager.marshSmall, transform.position, transform.rotation).GetComponent <Marshmellow>(); } manager.player = newPlayer; newPlayer.playerControlled = true; // Updates the other marshmellows newPlayer.marshmellows = marshmellows; // Creates other new marshmellows for (int i = 0; i < 3; i++) { Marshmellow temp = null; if (mellowSize == MellowSize.LARGE) { temp = Instantiate(manager.marshMedium, transform.position, transform.rotation).GetComponent <Marshmellow>(); } else if (mellowSize == MellowSize.MEDIUM) { temp = Instantiate(manager.marshSmall, transform.position, transform.rotation).GetComponent <Marshmellow>(); } newPlayer.marshmellows.Add(temp); } Destroy(gameObject); }
private void OnTriggerStay(Collider other) { if (other.tag == "Marshmellow") { Marshmellow mellow = other.GetComponent <Marshmellow>(); if (mellow != null) { mellow.health -= damageOverTime * Time.deltaTime; } } }
private void OnTriggerEnter(Collider other) { if (other.tag == "Marshmellow") { Marshmellow mellow = other.GetComponent <Marshmellow>(); if (mellow != null) { mellow.health -= damageOnEntry; } } }
// Merges a number of marshmellows together into a larger marshmellow void merge() { // Create a large marshmellow Marshmellow newPlayer = null; if (mellowSize == MellowSize.SMALL) { newPlayer = Instantiate(manager.marshMedium, transform.position, transform.rotation).GetComponent <Marshmellow>(); } else if (mellowSize == MellowSize.MEDIUM) { newPlayer = Instantiate(manager.marshLarge, transform.position, transform.rotation).GetComponent <Marshmellow>(); } manager.player = newPlayer; newPlayer.playerControlled = true; // Updates the other marshmellows newPlayer.marshmellows = marshmellows; int count = 0; List <int> removing = new List <int>(); for (int i = 0; i < marshmellows.Count; i++) { if (count < 3) { if (mellowSize == MellowSize.SMALL && marshmellows[i].mellowSize == MellowSize.SMALL) { Destroy(marshmellows[i].gameObject); removing.Add(i); count++; } else if (mellowSize == MellowSize.MEDIUM && marshmellows[i].mellowSize == MellowSize.MEDIUM) { Destroy(marshmellows[i].gameObject); removing.Add(i); count++; } } } for (int i = 0; i < removing.Count; i++) { removing[i] -= i; marshmellows.RemoveAt(removing[i]); } Destroy(gameObject); }
public Enemies GetEnemy(EnemyType type) { switch (type) { case EnemyType.Demon: Enemies demon = new Demon(); return(demon); case EnemyType.King: Enemies king = new King(); return(king); case EnemyType.Marshmellow: Enemies marshmellow = new Marshmellow(); return(marshmellow); } return(null); }
// Handles when a player dies and inhabits another marshmellow public void die() { // If there is another marshmellow to inhabit if (marshmellows.Count != 0) { Marshmellow temp = marshmellows[0]; Marshmellow newPlayer = null; switch (temp.mellowSize) { case MellowSize.SMALL: newPlayer = Instantiate(manager.marshSmall, temp.safePos, temp.transform.rotation).GetComponent <Marshmellow>(); break; case MellowSize.MEDIUM: newPlayer = Instantiate(manager.marshMedium, temp.safePos, temp.transform.rotation).GetComponent <Marshmellow>(); break; case MellowSize.LARGE: newPlayer = Instantiate(manager.marshLarge, temp.safePos, temp.transform.rotation).GetComponent <Marshmellow>(); break; } manager.player = newPlayer; newPlayer.playerControlled = true; newPlayer.GetComponent <Collider>().enabled = true; // Updates the other marshmellows newPlayer.marshmellows = marshmellows; marshmellows.RemoveAt(0); // Destroy old marshmellow Destroy(temp.gameObject); Destroy(gameObject); } else { } }
void Update() { Ray ray = new Ray(transform.position + transform.forward, manager.player.transform.position - transform.position); RaycastHit hit; chasing = false; Debug.DrawRay(ray.origin, ray.direction * 20.0f, Color.red); if (Physics.Raycast(ray, out hit, 20.0f)) { Marshmellow mellow = hit.transform.GetComponent <Marshmellow>(); if (mellow != null) { if (mellow.playerControlled == true) { //chasing = true; } } } if (Physics.Raycast(transform.position, transform.forward, out hit, 1, LayerMask.GetMask("Marshmellow"))) { //whomp-esque animation goes here } /// dummied out chasing mechanic /* * if (chasing == true) { * setDestination(manager.player.transform.position); * * if (Vector3.Distance(transform.position, destination) <= 2) { * Debug.Log("ATTACK!"); * manager.player.squash(); * } * } * else */ { setDestination(patrolPoints[currentTarget]); if (Vector3.Distance(patrolPoints[currentTarget], transform.position) < 2.5f) { currentTarget++; if (currentTarget >= patrolPoints.Count) { currentTarget = 0; } setDestination(patrolPoints[currentTarget]); } } transform.position = Vector3.MoveTowards(transform.position, destination, moveSpeed * Time.deltaTime); Vector3 dir = destination - transform.position; if (dir == Vector3.zero) { return; } Quaternion rot = Quaternion.LookRotation(dir); transform.rotation = Quaternion.Slerp(transform.rotation, rot, moveSpeed * Time.deltaTime); }