//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)); }
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"); } }
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(); }