// Update is called once per frame void Update() { if (Input.GetMouseButtonDown(1)) { RaycastHit hit; if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, Mathf.Infinity)) { GameObject characterGameObject = hit.collider.gameObject; if (characterGameObject.CompareTag("Player")) { foundCharacter = false; foreach (var item in characterList) { if (item == characterGameObject) { item.GetComponent <CharacterMove>().SetTarget(null); item.GetComponent <CharacterMove>().SetDestination(item.transform.position); characterGameObject.GetComponent <CharacterMove>().selected.SetActive(false); characterList.Remove(item); foundCharacter = true; break; } } if (foundCharacter == false) { characterGameObject.GetComponent <CharacterMove>().selected.SetActive(true); characterList.Add(characterGameObject); } } else if (characterGameObject.CompareTag("Enemy")) { target = characterGameObject; Instantiate(enemyParticle, hit.point, Quaternion.identity); } else { Instantiate(clickParticle, hit.point, Quaternion.identity); target = null; walkPosition = hit.point; } } } foreach (var item in characterList) { CharacterMove move = item.GetComponent <CharacterMove>(); move.SetTarget(target); if (target == null) { move.SetDestination(walkPosition); } } }
void Walking() { //if(characterMove.arrived) // ChangeState(State.Attacking); //Vector3 destinationPosition = characterMove.m_ characterMove.SetDestination(); if (characterMove.arrived) { state = State.Attacking; } //// 대기 시간이 아직 남았다면. //if (waitTime > 0.0f) //{ // // 대기 시간을 줄인다. // waitTime -= Time.deltaTime; // // 대기 시간이 없어지면. // if (waitTime <= 0.0f) // { // // 범위 내의 어딘가. // Vector2 randomValue = Random.insideUnitCircle * walkRange; // // 이동할 곳을 설정한다. // Vector3 destinationPosition = basePosition + new Vector3(randomValue.x, 0.0f, randomValue.y); // // 목적지를 지정한다. // SendMessage("SetDestination", destinationPosition); // } //} //else //{ // // 목적지에 도착한다. // if (characterMove.Arrived()) // { // // 대기 상태로 전환한다. // waitTime = Random.Range(waitBaseTime, waitBaseTime * 2.0f); // } // // 타겟을 발견하면 추적한다. // if (attackTarget) // { // ChangeState(State.Chasing); // } //} }