Beispiel #1
0
    // Update is called once per frame
    void Update()
    {
        // 點擊
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit))
            {
                if (hit.transform.name == _pet.name)
                {
                    touchPet();
                }
                else if (hit.transform.name == "Plane")
                {
                    touchPlane();
                }
            }
        }
        if (nowPetState != nextPetState)
        {
            nowPetState = nextPetState;
            AI();
        }

        if (_petNav.remainingDistance <= _petNav.stoppingDistance && !_petNav.pathPending && nowPetState != _petState.touch)
        {
            nextPetState = _petState.idle;
        }
    }
Beispiel #2
0
    //==============================================
    //================= 寵物行為 =====================
    //==============================================
    private IEnumerator IdleTime(float time)
    {
        setAnimatorSpeed("speed", 0f);
        yield return(new WaitForSeconds(time));

        nextPetState = _petState.walk;
    }
Beispiel #3
0
    private IEnumerator TouchTime(float time)
    {
        // 停止移動
        setAnimatorSpeed("speed", 0f);
        _petAni.SetBool("touch", true);

        yield return(new WaitForSeconds(time));

        _petAni.SetBool("touch", false);
        nextPetState = _petState.idle;
    }
Beispiel #4
0
 // Start is called before the first frame update
 void Start()
 {
     nowPetState = _petState.idle;
     if (_pet == null)
     {
         _pet = this.gameObject;
     }
     if (_petAni == null)
     {
         _petAni = _pet.GetComponent <Animator>();
     }
     if (_petNav == null)
     {
         _petNav = _pet.GetComponent <NavMeshAgent>();
     }
     AI();
 }
Beispiel #5
0
 // 玩家點擊地面用
 public void touchPlane()
 {
     nextPetState = _petState.run;
 }
Beispiel #6
0
 // 玩家點擊寵物用
 public void touchPet()
 {
     nextPetState = _petState.touch;
 }