// private bool isGround = false; //ゲーム開始時に一度 void Start() { hp_manager_ = GetComponent<HPManager>(); enemy_stater_ = GetComponent<EnemyStater>(); //Playerオブジェクトを検索し、参照を代入 player = GameObject.FindGameObjectWithTag("Player").transform; distance_state = DISTANCE_STATE.LONG; attack_state = ATTACK_STATE.WAIT; }
//毎フレームに一度 void Update() { if (!hp_manager_.isActive) return; if (!enemy_stater_.isNormal) return; if (server_stage_manager_ == null) { server_stage_manager_ = FindObjectOfType<ServerStageManager>(); } if (server_stage_manager_ == null) return; if (server_stage_manager_.IsEndTutorial) return; Vector3 playerPos = player.position; //プレイヤーの位置 Vector3 direction = playerPos - transform.position; //方向と距離を求める。 float distance = direction.sqrMagnitude; //directionから距離要素だけを取り出す。 direction = direction.normalized; //単位化(距離要素を取り除く) direction.y = 0f; //後に敵の回転制御に使うためY軸情報を消去。これにより敵が上下を向かなくなる。 //経過時間を取得 searchTime += Time.deltaTime; if (searchTime >= 1.0f) { //最も近かったオブジェクトを取得 nearObj = serchTag(gameObject, "Player"); player = nearObj.transform; //経過時間を初期化 searchTime = 0; } //プレイヤーとの距離を設定 switch (distance_state) { case DISTANCE_STATE.SHORT: limitDistance = shortlimitDistance; break; case DISTANCE_STATE.MIDDLE: limitDistance = middlelimitDistance; break; case DISTANCE_STATE.LONG: limitDistance = longlimitDistance; break; } //プレイヤーの距離が一定以上でなければ、敵キャラクターはプレイヤーへ近寄ろうとしない if (distance >= limitDistance) { //プレイヤーとの距離が制限値以上なので普通に近づく transform.position = transform.position + (direction * speed * Time.deltaTime); } else if (distance < limitDistance) { //プレイヤーとの距離が制限値未満(近づき過ぎ)なので、後退する。 transform.position = transform.position - (direction * speed * Time.deltaTime); } //プレイヤーの方を向く transform.rotation = Quaternion.LookRotation(direction); if (timer >= 180) { int var; var = Random.Range(0, 3); Debug.Log(var); if (var == 0) { distance_state = DISTANCE_STATE.SHORT; Debug.Log("short"); } if (var == 1) { distance_state = DISTANCE_STATE.MIDDLE; Debug.Log("middle"); } if (var == 2) { distance_state = DISTANCE_STATE.LONG; Debug.Log("long"); } timer = 0; } if (atktimer >= 20) { int var; var = Random.Range(0, 60); if (var < 10) { } else if (var < 30) { Attack(); } else { } atktimer = 0; } timer += 1; atktimer += 1; }
//毎フレームに一度 void Update() { if (enemy_stater_.isMeleed || !hp_manager_.isActive) { StopAllCoroutines(); guard = false; } if (!hp_manager_.isActive) return; if (!enemy_stater_.isNormal) return; if (server_stage_manager_ == null) { server_stage_manager_ = FindObjectOfType<ServerStageManager>(); } if (server_stage_manager_ == null) return; if (server_stage_manager_.IsEndTutorial) return; if (!enter_room_.isEnter) return; if (!guard) { StartCoroutine(Move()); guard = true; } Vector3 playerPos = player.position; //プレイヤーの位置 Vector3 direction = playerPos - transform.position; //方向と距離を求める。 float distance = direction.sqrMagnitude; //directionから距離要素だけを取り出す。 direction = direction.normalized; //単位化(距離要素を取り除く) //direction.y = 0f; //後に敵の回転制御に使うためY軸情報を消去。これにより敵が上下を向かなくなる。 //経過時間を取得 searchTime += Time.deltaTime; if (searchTime >= 1.0f) { //最も近かったオブジェクトを取得 nearObj = serchTag(gameObject, "Player"); player = nearObj.transform; //経過時間を初期化 searchTime = 0; } //プレイヤーとの距離を設定 switch (distance_state) { case DISTANCE_STATE.SHORT: limitDistance = shortlimitDistance; break; case DISTANCE_STATE.MIDDLE: limitDistance = middlelimitDistance; break; case DISTANCE_STATE.LONG: limitDistance = longlimitDistance; break; } //プレイヤーの方を向く transform.rotation = Quaternion.LookRotation(direction); if (timer >= 180) { int var; var = UnityEngine.Random.Range(0, 3); if (var == 0) { distance_state = DISTANCE_STATE.SHORT; } if (var == 1) { distance_state = DISTANCE_STATE.MIDDLE; } if (var == 2) { distance_state = DISTANCE_STATE.LONG; } timer = 0; } if (atktimer >= 20) { int var; var = UnityEngine.Random.Range(0, 60); if (var < 10) { } else if (var < 30) { Attack(); } else { } atktimer = 0; } timer += 1; atktimer += 1; }
//ゲーム開始時に一度 void Start() { hp_manager_ = GetComponent<HPManager>(); enemy_stater_ = GetComponent<EnemyStater>(); //Playerオブジェクトを検索し、参照を代入 player = GameObject.FindGameObjectWithTag("Player").transform; distance_state = DISTANCE_STATE.LONG; attack_state = ATTACK_STATE.WAIT; right_weapon_ = right_weapon_object_.GetComponentInChildren<Weapon>(); left_weapon_ = left_weapon_object_.GetComponentInChildren<Weapon>(); var id = GetComponent<Identificationer>().id; var air_frame_parameter = FindObjectOfType<AirFrameParameter>(); speed = air_frame_parameter.GetMoveSpeed(id); JUMP_POWER = air_frame_parameter.GetJumpPower(id); BOOST_POWER = air_frame_parameter.GetBoostPower(id); foreach (var room in FindObjectsOfType<EnterRoom>()) { if (room.transform.parent.name.GetHashCode() != roomName.GetHashCode()) continue; enter_room_ = room; Debug.Log(gameObject.name); } }
// private bool isGround = false; //ゲーム開始時に一度 void Start() { //Playerオブジェクトを検索し、参照を代入 player = GameObject.FindGameObjectWithTag("Player").transform; distance_state = DISTANCE_STATE.LONG; attack_state = ATTACK_STATE.WAIT; }
//毎フレームに一度 void Update() { if (!hp_manager_.isActive) return; if (!enemy_stater_.isNormal) return; Vector3 playerPos = player.position; //プレイヤーの位置 Vector3 direction = playerPos - transform.position; //方向と距離を求める。 float distance = direction.sqrMagnitude; //directionから距離要素だけを取り出す。 direction = direction.normalized; //単位化(距離要素を取り除く) direction.y = 0f; //後に敵の回転制御に使うためY軸情報を消去。これにより敵が上下を向かなくなる。 //経過時間を取得 searchTime += Time.deltaTime; if (searchTime >= 1.0f) { //最も近かったオブジェクトを取得 nearObj = serchTag(gameObject, "Player"); player = nearObj.transform; //経過時間を初期化 searchTime = 0; } //プレイヤーとの距離を設定 switch (distance_state) { case DISTANCE_STATE.SHORT: limitDistance = shortlimitDistance; break; case DISTANCE_STATE.MIDDLE: limitDistance = middlelimitDistance; break; case DISTANCE_STATE.LONG: limitDistance = longlimitDistance; break; } //プレイヤーの距離が一定以上でなければ、敵キャラクターはプレイヤーへ近寄ろうとしない if (distance >= limitDistance) { //プレイヤーとの距離が制限値以上なので普通に近づく transform.position = transform.position + (direction * speed * Time.deltaTime); } else if (distance < limitDistance) { //プレイヤーとの距離が制限値未満(近づき過ぎ)なので、後退する。 transform.position = transform.position - (direction * speed * Time.deltaTime); } //プレイヤーの方を向く transform.rotation = Quaternion.LookRotation(direction); if (hitnaway == HITNAWAY.HIT) { distance_state = DISTANCE_STATE.SHORT; } else if (hitnaway == HITNAWAY.AWAY) { Attack(); distance_state = DISTANCE_STATE.LONG; } }