void Update() { if (state == EnemyState.Walk || state == EnemyState.Chase) // 見回りまたはキャラクターを追いかける状態 { if (state == EnemyState.Chase) // キャラクターを追いかける状態であればキャラクターの目的地を再設定 { setPosition.SetDestination(playerTransform.position); } if (enemyController.isGrounded) { velocity = Vector3.zero; animator.SetFloat("Speed", 2.0f); direction = (setPosition.GetDestination() - transform.position).normalized; transform.LookAt(new Vector3(setPosition.GetDestination().x, transform.position.y, setPosition.GetDestination().z)); velocity = direction * walkSpeed; } if (state == EnemyState.Walk) { if (Vector3.Distance(transform.position, setPosition.GetDestination()) < 0.7f) //目的地に到着したかどうかの判定 { SetState("wait"); animator.SetFloat("Speed", 0.0f); } } else if (state == EnemyState.Chase) { if (Vector3.Distance(transform.position, setPosition.GetDestination()) < 1f) // 攻撃する距離だったら攻撃 { SetState("attack"); } } } else if (state == EnemyState.Wait) // 到着していたら一定時間待つ { elapsedTime += Time.deltaTime; if (elapsedTime > waitTime) // 待ち時間を越えたら次の目的地を設定 { SetState("walk"); } } else if (state == EnemyState.Freeze) // 攻撃後のフリーズ状態 { elapsedTime += Time.deltaTime; if (elapsedTime > freezeTime) { SetState("walk"); } } velocity.y += Physics.gravity.y * Time.deltaTime; enemyController.Move(velocity * Time.deltaTime); }
// Update is called once per frame void Update() { // 見回りまたはキャラクターを追いかける状態 if (state == EnemyState.Walk || state == EnemyState.Chase) { // キャラクターを追いかける状態であればキャラクターの目的地を再設定 if (state == EnemyState.Chase) { setPosition.SetDestination(playerTransform.position); } if (enemyController.isGrounded) { velocity = Vector3.zero; animator.SetFloat("Speed", 2.0f); direction = (setPosition.GetDestination() - transform.position).normalized; transform.LookAt(new Vector3(setPosition.GetDestination().x, transform.position.y, setPosition.GetDestination().z)); velocity = direction * walkSpeed; } // 目的地に到着したかどうかの判定 if (Vector3.Distance(transform.position, setPosition.GetDestination()) < 0.5f) { SetState(EnemyState.Wait); animator.SetFloat("Speed", 0.0f); } // 到着していたら一定時間待つ } else if (state == EnemyState.Wait) { elapsedTime += Time.deltaTime; // 待ち時間を越えたら次の目的地を設定 if (elapsedTime > waitTime) { SetState(EnemyState.Walk); } } velocity.y += Physics.gravity.y * Time.deltaTime; enemyController.Move(velocity * Time.deltaTime); }
// Update is called once per frame void Update() { //死んだとき //HPが0以下なら if (HP <= 0) { Debug.Log("EnemyDead"); SetState(EnemyState.Dead); } // 見回りまたはキャラクターを追いかける if (state == EnemyState.Walk || state == EnemyState.Chase) { // キャラクターを追いかける状態であればキャラクターの目的地を再設定 if (state == EnemyState.Chase) { setPosition.SetDestination(playerTransform.position); } if (enemyController.isGrounded) { velocity = Vector3.zero; animator.SetFloat("Speed", 2.0f); direction = (setPosition.GetDestination() - transform.position).normalized; transform.LookAt(new Vector3(setPosition.GetDestination().x, transform.position.y, setPosition.GetDestination().z)); velocity = direction * walkSpeed; } if (state == EnemyState.Walk) { // 目的地に到着したかどうかの判定 if (Vector3.Distance(transform.position, setPosition.GetDestination()) < 0.7f) { SetState(EnemyState.Wait); animator.SetFloat("Speed", 0.0f); } } else if (state == EnemyState.Chase) { // 攻撃する距離だったら攻撃 if (Vector3.Distance(transform.position, setPosition.GetDestination()) < 1f) { SetState(EnemyState.Attack); } } // 到着していたら一定時間待つ } else if (state == EnemyState.Wait) { elapsedTime += Time.deltaTime; // 待ち時間を越えたら次の目的地を設定 if (elapsedTime > waitTime) { SetState(EnemyState.Walk); } } // 攻撃後のフリーズ状態 else if (state == EnemyState.Freeze) { elapsedTime += Time.deltaTime; if (elapsedTime > freezeTime) { SetState(EnemyState.Walk); } } velocity.y += Physics.gravity.y * Time.deltaTime; enemyController.Move(velocity * Time.deltaTime); }
void Update() { //見回りまたはプレイヤーを追いかける状態 if (state == EnemyState.Walk || state == EnemyState.Chase) { //プレイヤーを追いかける状態であればキャラクターの目的地を再設定 if (state == EnemyState.Chase) { setPosition.SetDestination(playerTransform.position); } if (enemyController.isGrounded) //接地判定 { velocity = Vector3.zero; //ベクトルを初期化 animator.SetFloat("Speed", 2.0f); //アニメーターのスピード値を設定 direction = (setPosition.GetDestination() - transform.position).normalized; transform.LookAt(new Vector3(setPosition.GetDestination().x, transform.position.y, setPosition.GetDestination().z)); velocity = direction * walkSpeed; } //目的地に到着したか判定 if (state == EnemyState.Walk) { if (Vector3.Distance(transform.position, setPosition.GetDestination()) < 0.7f) { SetState(EnemyState.Wait); animator.SetFloat("Speed", 0.0f); } } else if (state == EnemyState.Chase) { //攻撃する距離だったら攻撃 if (Vector3.Distance(transform.position, setPosition.GetDestination()) < 1f) { SetState(EnemyState.Attack); } //到着したら一定時間止まる } else if (state == EnemyState.Wait) { elapsedTime += Time.deltaTime; //待ち時間を越えたら次の目的地へ行く if (elapsedTime > waitTime) { SetState(EnemyState.Walk); } //攻撃後のフリーズ状態 } else if (state == EnemyState.Freeze) { elapsedTime += Time.deltaTime; if (elapsedTime > freezeTime) { SetState(EnemyState.Walk); } } if (state == EnemyState.Dead) { return; } } velocity.y += Physics.gravity.y * Time.deltaTime; //重力を働かせる enemyController.Move(velocity * Time.deltaTime); //指定速度で移動 }