//---------------------------------------------------------------------------- /// <summary> /// 타겟에게 나의 능력치를 기반하여 HP를 감소시킨다 /// </summary> void Enter_AttackState() { MonsterStatus myAttribute = gameObject.GetComponent <MonsterStatus>(); if (ProcessDeadState(myAttribute)) { return; } //애니메이션 실행 Playerstatus targetAttribute = Target.GetComponent <Playerstatus>(); targetAttribute.current_hp -= myAttribute.damage; Debug.Log("Attack : " + gameObject.name + "->" + Target.name); Debug.Log("Hp : " + targetAttribute.current_hp.ToString()); CharacterStateMachine targetStateMachine = Target.GetComponent <CharacterStateMachine>(); targetStateMachine.SetState(State.DAMAGED); //대상이 죽은 경우는 타겟 해제 if (targetAttribute.current_hp <= 0) { Target = null; } StartCoroutine("TransStateToIdle", myAttribute.Atk_delay); }
void Update_IdleState() { MonsterStatus myAttribute = gameObject.GetComponent <MonsterStatus>(); if (ProcessDeadState(myAttribute)) { return; } //타겟이 계속 바뀌면 안됨으로, 타겟이 유효한 경우는 유지되도록 bool isFindTarget = false; if (Target != null) { Playerstatus targetAttribute = Target.GetComponent <Playerstatus>(); if (targetAttribute.current_hp > 0) { isFindTarget = true; } } if (!isFindTarget) { //Target = FindEnemy(searchDistanceMeter: 2.0f); if (Target != null) { //적을 찾았으면 대상으로 지정하고 이동 Playerstatus targetAttribute = Target.GetComponent <Playerstatus>(); Vector3 dir = Target.transform.position - transform.position; dir.Normalize(); float distance = Vector3.Distance(Target.transform.position, transform.position); if (distance > targetAttribute.playerRadius + myAttribute.monsterrad) { transform.LookAt(Target.transform.position); TargetPosition = Target.transform.position; SetState(State.MOVE); } else { if (nextAttackCooltime_ == 0.0f || nextAttackCooltime_ < Time.time) { nextAttackCooltime_ = Time.time + myAttribute.Atk_delay; SetState(State.ATTACK); } } } else { //적을 못 찾았으면 랜덤한 위치로 이동한다. // TargetPosition = FindRandomTargetPosition(minRangeMeter: 4, maxRangeMeter: 8); SetState(State.MOVE); } } }
// Use this for initialization void Start() { Player = GameObject.Find("Player"); Status = Player.GetComponent <Playerstatus>(); UpdateStamina.text = "Stamina: " + Mathf.Round(Status.Stamina); }
// Use this for initialization void Start() { //dizendo quem é o player Player = GameObject.Find("Player"); //Dizendo quem é o status do player Status = Player.GetComponent <Playerstatus>(); UpdateStatus.text = "Sede: " + Mathf.Round(Status.Sede); }
void Idle() { if (current_state == State.Died) { return; } Debug.Log("NOwIDle"); bool isTargetAlive = false; MonsterStatus mon = gameObject.GetComponent <MonsterStatus>(); if (Target == null) { plyerrad = Target.GetComponent <Playerstatus>(); if (plyerrad.current_hp >= 0) { isTargetAlive = true; } } if (!isTargetAlive) { float distance = Vector3.Distance(Target.transform.position, transform.position);// target과 나의 distance 를 잡아준다 . if (distance > 5.0f) { transform.LookAt(Target.transform.position); TargetPosition = Target.transform.position; SetState(State.Move); } else { Debug.Log("attakc!!"); td.enabled = false; SetState(State.Attack); } // 몬스터 죽었을때 컨트롤 파츠 if (plyerrad.current_hp < 0) { SetState(State.Died); } } }
// Update is called once per frame void Update() { plyerrad = Target.GetComponent <Playerstatus>(); mon = transform.GetComponent <MonsterStatus>(); td = GetComponent <TestCode>(); float distance = Vector3.Distance(Target.transform.position, transform.position);// target과 나의 distance 를 잡아준다 . // Debug.Log(" x: "+td.objEndCube.transform.position.x + "z :"+td.objEndCube.transform.position.z); if (count == 0 && mon.current_hp <= 50) { Debug.Log("countup"); count++; SetState(State.Hiding); } switch (current_state) { case State.Idle: Idle(); break; case State.Move: Move(); break; case State.Attack: Attack(); break; case State.Died: DIED(); break; case State.Hiding: Hiding(); break; case State.Sleeping: Sleeping(); break; } // 몬스터 죽었을때 컨트롤 파츠 if (plyerrad.current_hp < 0) { SetState(State.Died); } }
void Move() { plyerrad = Target.GetComponent <Playerstatus>(); mon = transform.GetComponent <MonsterStatus>(); td = GetComponent <TestCode>(); Vector3 dir = Target.transform.position - transform.position; dir.Normalize(); // Debug.Log("move"); float distance = Vector3.Distance(Target.transform.position, transform.position);// target과 나의 distance 를 잡아준다 . if (distance > mon.monsterrad + plyerrad.playerRadius) { transform.LookAt(Target.transform.position); SetState(State.Move); td.enabled = true; td.objEndCube = GameObject.FindGameObjectWithTag("End"); td.objStartCube = monster; // StopAllCoroutines(); } else { td.enabled = false; Debug.Log("transfer"); StartCoroutine("TransfertoIdle", 0.5f); } // 몬스터 죽었을때 컨트롤 파츠 if (plyerrad.current_hp < 0) { SetState(State.Died); } }
// Use this for initialization void Start() { //rigidbody rb = GetComponent <Rigidbody>(); //dizendo quem é o jogador Jogador = GameObject.Find("Player"); //pegando o playerstatus StatusDoJogador = Jogador.GetComponent <Playerstatus>(); //variaveis// //velocidade Speed = 10.0f; //velocidade correndo RunningSpeed = 25.0f; //velocidade de rotação RotationSpeed = 140.0f; }
// Use this for initialization void Start() { Player = GameObject.Find("Player"); Status = Player.GetComponent <Playerstatus>(); }
// private AI AI; // Use this for initialization void Start() { status = GetComponent <Playerstatus>(); }
// Use this for initialization void Start() { Player = GameObject.Find("Player"); Status = Player.GetComponent <Playerstatus>(); Txt.text = "Fome: " + Status.Fome; }