private void goToTarget() { GameObject map = GameObject.FindGameObjectWithTag("Map"); float scaleConversion = map.transform.localScale.x; Vector3 offsetDirection = new Vector3(Random.Range(-1.0f, 1.0f), 0, Random.Range(-1.0f, 1.0f)); Vector3 newTarget = player.transform.position + (offsetDirection * Random.Range(15.0f * scaleConversion, 25f * scaleConversion)); petTarget.transform.position = newTarget; pws = PetWorldState.WALK_TARGET; }
void updateWalk() { float targetPlayerdistance = (player.transform.position - petTarget.transform.position).magnitude; if (targetPlayerdistance > 40f) { goToTarget(); } Vector3 diff = petTarget.transform.position - transform.position; diff.Normalize(); float rot_y = Mathf.Atan2(diff.z, diff.x) * Mathf.Rad2Deg; Quaternion rotation = Quaternion.Euler(0, -rot_y + 90, 0); transform.rotation = Quaternion.RotateTowards(transform.rotation, rotation, maxRot); GameObject map = GameObject.FindGameObjectWithTag("Map"); float scaleConversion = map.transform.localScale.x; transform.Translate(0, 0, speed * scaleConversion * Time.deltaTime); float targetDistance = (petTarget.transform.position - transform.position).magnitude; if (targetDistance < 2f * scaleConversion) { if (Random.Range(0, 5) < 2) { pws = PetWorldState.IDLE_SIT; anim.SetInteger("State", 0); return; } else { pws = PetWorldState.IDLE_STAND; anim.SetInteger("State", 1); return; } } anim.SetInteger("State", 2); }