示例#1
0
 public void removeFood(StomachFoodBlob f)
 {
     stomanager.disolvedonefood();
     if (f == nextToDigest)
     {
         nextToDigest = null;
     }
     spawnedFoodBlobs.Remove(f);
     f.transform.SetParent(null);// = null;
     Object.Destroy(f);
 }
示例#2
0
    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);
    }
示例#3
0
    /**
     * 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;
            }
        }
    }