예제 #1
0
 override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
 {
     cat      = animator.gameObject;
     catAI    = cat.GetComponent <CatAI>();
     opponent = catAI.GetPlayer();
     cage     = catAI.GetCage();
 }
예제 #2
0
    List <Transform> FindVisibleTargets()
    {
        List <Transform> visibleObjects = new List <Transform>();

        Collider[] objectsInRadius = Physics.OverlapSphere(transform.position, viewRadius, targetMask);
        for (int i = 0; i < objectsInRadius.Length; i++)
        {
            Transform target    = objectsInRadius[i].transform;
            Vector3   direction = (target.position - transform.position).normalized;
            if (Vector3.Angle(transform.forward, direction) < viewAngle / 2)
            {
                RaycastHit hit;
                if (!Physics.Raycast(transform.position, direction, out hit, viewRadius, obstacleMask))
                {
                    visibleObjects.Add(target);

                    CatAI cat = objectsInRadius[i].gameObject.GetComponent <CatAI>();
                    if (cat != null)
                    {
                        //cat.StopWalking();
                    }
                }
            }
        }
        return(visibleObjects);
    }
예제 #3
0
 public CatBrain(CatAI cat)
 {
     this.cat = cat;
     this.currentActiveState = new RestingState(this.cat);
     this.physicalState      = new CatPhysicalState();
     this.mentalState        = new MentalState();
     this.eventQueue         = new EventQueue(EVENT_UPDATE_INTERVAL);
 }
예제 #4
0
 public CatBrain(CatAI cat, ActiveState initialActiveState)
 {
     this.cat = cat;
     this.currentActiveState = initialActiveState;
     this.physicalState      = new CatPhysicalState();
     this.mentalState        = new MentalState();
     this.eventQueue         = new EventQueue(EVENT_UPDATE_INTERVAL);
 }
예제 #5
0
        public void Run()
        {
            AITemplate catAI = new CatAI();
            AITemplate dogAI = new DogAI();

            catAI.RunTempletePlane();
            dogAI.RunTempletePlane();
        }
예제 #6
0
    public CuddlingState(CatAI cat) : base(cat)
    {
        Debug.Log("Cuddling!");
        animator = cat.GetComponent <Animator>();

        animator.SetBool("PET", true);
        lastPet = Time.time;
    }
예제 #7
0
    // Start is called before the first frame update
    void Start()
    {
        catSprite = GameManager.singleton.GetNewCat();
        catSprite.transform.parent        = this.gameObject.transform;
        catSprite.transform.localPosition = Vector3.zero;

        breedingAparatus = GetComponent <CatMultiply>();
        catMove          = GetComponent <CatAI>();
    }
예제 #8
0
    void BarkAtCats(CatAI cat)
    {
        float chase = Random.value;

        // RandomBarks(cat.gameObject);
        SingleBark(cat.gameObject);

        //Make the cat flee!
        cat.RunFromDog(gameObject.transform);
        FollowTarget(cat.gameObject.transform, 5f);
        RandomBarks();
    }
예제 #9
0
파일: Cat.cs 프로젝트: lhwlyd/CCTVnew
    private void Awake()
    {
        //catAnimation = this.gameObject.GetComponent<Animation>();
        emojiManager = this.gameObject.GetComponent <CatEmoji>();
        animator     = this.gameObject.GetComponent <Animator>();
        agent        = this.gameObject.GetComponent <NavMeshAgent>();
        catAI        = this.gameObject.GetComponent <CatAI>();
        scoreManager = GameObject.Find("ScorePage").GetComponent <ScoreManager>();
        state        = State.IDLING;
        //walkTo(target);
        touchTimer = 20f;
        moodPoints = 100;
        hungryPts  = 0;

        audioSource = this.gameObject.GetComponent <AudioSource>();
    }
예제 #10
0
    // Spawns cats in a random location catRadius units away from the initial targeted player
    private void spawnCats(int numberOfCats)
    {
        float catDistance  = 360.0f / numberOfCats;
        float currentAngle = Random.Range(0, 360);

        for (int i = 0; i < numberOfCats; i++)
        {
            float      radAngle = currentAngle * Mathf.Deg2Rad;
            Vector3    position = new Vector3(Mathf.Sin(radAngle) * catRadius, 2, Mathf.Cos(radAngle) * catRadius);
            GameObject catObj   = Instantiate(catPrefab, position, Quaternion.identity, transform);
            CatAI      cat      = catObj.GetComponent <CatAI>();
            cat.setTargetedPlayer(targetedPlayer);
            _cats.Add(cat);
            currentAngle += catDistance;
        }
    }
예제 #11
0
    public HuntingState(CatAI cat) : base(cat)
    {
        Debug.Log("Hunting for food!");

        // setup initial animations/navigation for hunting
    }
예제 #12
0
 public RestingState(CatAI cat) : base(cat)
 {
     Debug.Log("Resting and licking");
     animator = cat.GetComponent <Animator>();
 }
예제 #13
0
 public ActiveState(CatAI cat)
 {
     this.cat = cat;
 }
예제 #14
0
 public RoamingState(CatAI cat) : base(cat)
 {
     Debug.Log("Just roaming");
 }