Beispiel #1
0
    //preparing :

    private void InitNeeds()
    {
        needs = new List <NeedObject>();
        NeedObject n1 = ScriptableObject.CreateInstance <NeedObject>();

        n1.SetNeedObjectValues(activities.bladder);
        needs.Add(n1);

        NeedObject n2 = ScriptableObject.CreateInstance <NeedObject>();

        n2.SetNeedObjectValues(activities.energy);
        needs.Add(n2);

        NeedObject n3 = ScriptableObject.CreateInstance <NeedObject>();

        n3.SetNeedObjectValues(activities.fun);
        needs.Add(n3);

        NeedObject n4 = ScriptableObject.CreateInstance <NeedObject>();

        n4.SetNeedObjectValues(activities.hunger);
        needs.Add(n4);

        NeedObject n5 = ScriptableObject.CreateInstance <NeedObject>();

        n5.SetNeedObjectValues(activities.hygiene);
        needs.Add(n5);

        //NeedObject n6 = ScriptableObject.CreateInstance<NeedObject>();
        //n6.SetNeedObjectValues(activities.social);
        //needs.Add(n6);
        doing = idle.searching;
        anim.Play("walking");
    }
 public void Chase(NeedObject needObject, Action callBack)
 {
     StopAllCoroutines();
     if (coroutine != null)
     {
         StopCoroutine(coroutine);
     }
     coroutine = StartCoroutine(MoveWithin(needObject, callBack));
 }
Beispiel #3
0
 public void Introduce(NeedObject needObject)
 {
     if (state == PETSTATE.None ||
         state == PETSTATE.Wandering ||
         state == PETSTATE.Chasing)
     {
         this.needObject = needObject;
         state           = PETSTATE.Chasing;
         pet.Chase(this.needObject, ChaseComplete);
         pet.ResetAnimations("Wander");
     }
 }
Beispiel #4
0
    private void Awake()
    {
        shadowObject = GetComponent <ShadowObject>();
        sprite       = GetComponent <SpriteObject>();
        needObject   = GetComponent <NeedObject>();

        // Sets up the audio to be 3D
        audioSource = gameObject.AddComponent <AudioSource>();
        audioSource.spatialBlend = 1.0F;
        audioSource.rolloffMode  = AudioRolloffMode.Linear;

        // Loads the audio clips
        liftingAudio     = Resources.Load <AudioClip>("bloop");
        landingAudios    = new AudioClip[3];
        landingAudios[0] = Resources.Load <AudioClip>("grass_1");
        landingAudios[1] = Resources.Load <AudioClip>("grass_2");
        landingAudios[2] = Resources.Load <AudioClip>("grass_3");
    }
    //Coroutine to move with a certain distance of a target
    IEnumerator MoveWithin(NeedObject target, Action callBack)
    {
        float speedRef = 0f;
        float distance = Vector2.Distance(target.ClosestPos((Vector2)transform.position).position, transform.position);

        while (distance > acceptableVariance)
        {
            if (target == null)
            {
                break;
            }
            distance = Vector2.Distance(target.ClosestPos((Vector2)transform.position).position, transform.position);

            if (distance > distToSlow)
            {
                speedRef = Mathf.MoveTowards(speedRef, 1, Time.deltaTime);
            }
            else
            {
                speedRef = Mathf.MoveTowards(speedRef, 0, Time.deltaTime);
            }

            speed = minSpeed + accelCurve.Evaluate(speedRef) * maxSpeed;
            if (target.gameObject.transform.position.x > transform.position.x)
            {
                transform.localScale = new Vector3(-scale, scale, 1f);
            }
            else
            {
                transform.localScale = new Vector3(scale, scale, 1f);
            }

            transform.position = Vector2.MoveTowards(transform.position, target.ClosestPos((Vector2)transform.position).position, speed * Time.deltaTime);
            GameManager.Instance.PetMove();
            yield return(null);
        }
        callBack.Invoke();
    }