public void removeFood(StomachFoodBlob f) { stomanager.disolvedonefood(); if (f == nextToDigest) { nextToDigest = null; } spawnedFoodBlobs.Remove(f); f.transform.SetParent(null);// = null; Object.Destroy(f); }
public StomachFoodBlob getNextFoodBlobToDigest() { if (nextToDigest == null) { float maxY = System.Single.MinValue; StomachFoodBlob nextFood = null; for (int i = 0; i < spawnedFoodBlobs.Count; i++) { if (maxY < spawnedFoodBlobs [i].transform.position.y) { maxY = spawnedFoodBlobs [i].transform.position.y; nextFood = spawnedFoodBlobs [i]; } } nextToDigest = nextFood; } return(nextToDigest); }
/** * Update is called once per frame */ void Update() { /* Draw the proper activated or deactivated texture based on acid level*/ if (gm.getCurrentAcidLevel() == "acidic") { i.sprite = activatedTexture; if (fm.noFoodBlobs()) { enzymeAudioBoolean = false; float step = speed * Time.deltaTime; Vector3 origin = new Vector3(0f, 0f, 90f); //Vector2.zero; if (enzymeAttacking == false) { transform.position = Vector3.MoveTowards(transform.position, origin, step); } else { transform.position = Vector3.MoveTowards(transform.position, zymePosition, step * attackSpeedRatio); //Attacking transform.rotation = Quaternion.RotateTowards(transform.rotation, zymeRotation, step * 10); } attackTimer = attackTimer + Time.deltaTime; if (attackTimer >= attackTime) { enzymeAttacking = true; } } else { elapsedTime += Time.deltaTime; if (elapsedTime > digestDelay) { float step = speed * Time.deltaTime; currentlyDigesting = fm.getNextFoodBlobToDigest(); Vector3 foodLocation = currentlyDigesting.transform.position; Vector3 offset = currentlyDigesting.transform.rotation * new Vector3(0, -12, 0); foodLocation = foodLocation + offset; transform.position = Vector3.MoveTowards(transform.position, foodLocation, step); transform.rotation = Quaternion.RotateTowards(transform.rotation, currentlyDigesting.transform.rotation, step * 10); if (!currentlyDigesting.IsDigesting && Vector3.Distance(transform.position, foodLocation) < MIN_DIGESTION_DISTANCE) { currentlyDigesting.IsDigesting = true; if (!enzymeAudioBoolean) { audio.PlayOneShot(enzymeAudio, 1.0f); enzymeAudioBoolean = true; } } else { enzymeAudioBoolean = false; } } attackTimer = 0; enzymeAttacking = false; } } else { i.sprite = deactivatedTexture; enzymeAudioBoolean = false; float step = reverseSpeed * Time.deltaTime; Vector3 origin = new Vector3(0f, 0f, 90f); //Vector2.zero; transform.position = Vector3.MoveTowards(transform.position, origin, step); transform.rotation = Quaternion.RotateTowards(transform.rotation, Quaternion.Euler(0, 0, 0), step * 10); attackTimer = 0; enzymeAttacking = false; } float offSetX = 20f; float offSetY = 40f; if ((transform.position.x - zymePosition.x) < offSetX && (transform.position.y - zymePosition.y) < offSetY) { if (fm.noFoodBlobs()) { Debug.Log("Zyme eaten! Game Over!"); zymeEaten = true; } } }