private void OnTriggerEnter(Collider other) { if (other.tag == "Monster") { BulletSpawner bulletmonster = other.GetComponent <BulletSpawner>(); if (bulletmonster != null) { bulletmonster.GetDamage(attackAmount); } Destroy(gameObject); } else if (other.tag == "Monster2") { MonsterCtrl alien = other.GetComponent <MonsterCtrl>(); if (alien != null) { alien.GetDamage(attackAmount); } Destroy(gameObject); } else if (other.tag == "START") { FindObjectOfType <GameManager>().StartGame(); } //Destroy(gameObject); }
private GameObject GetTargetMonster() { GameObject monster = null; GameObject[] listObject = GameObject.FindGameObjectsWithTag("TAG_MONSTER"); foreach (GameObject obj in listObject) { MonsterCtrl mCtrl = obj.gameObject.GetComponent <MonsterCtrl>(); if ((mCtrl != null) && (mCtrl.M_HP > 0f)) { float distance = Vector3.Distance(transform.position, obj.gameObject.transform.position); if (distance <= RADA_RANGE) { if (monster == null) { monster = obj; } else { float distanceToCurMonster = Vector3.Distance(transform.position, monster.gameObject.transform.position); // float newDistance = Vector3.Distance(transform.position, obj.gameObject.transform.position); if (distance < distanceToCurMonster) { monster = obj; } } } } } return(monster); }
public void Run(MonsterCtrl monster) { if (monster.Detect()) { if (monster.IsAttackable()) { monster.ChangeState( StateManager.GetIState(StateManager.State.Attack)); } else { //monster.SetCheckpoint(); monster.Move(); monster.ChangeState( StateManager.GetIState(StateManager.State.Trace)); } } else { if (monster.GetDistance(monster.GetCheckpoint()) == 0) { monster.ChangeState( StateManager.GetIState(StateManager.State.Patrol)); } else { monster.Move(); monster.ChangeState( StateManager.GetIState(StateManager.State.Trace)); } } }
void Start() { //몬스터 이동 제한줄 펜스 접근 frogFenceFL = GameObject.FindGameObjectWithTag("FrogFenceFL"); frogFenceBR = GameObject.FindGameObjectWithTag("FrogFenceBR"); //플레이어(타겟)에 접근 target = playerTr.gameObject; //monsterManager 스크립트에 접근 monsterManagerTag = FindTag.getInstance().monsterManager; monsterManagerTr = Find.getInstance().FindTagTransform(monsterManagerTag); monsterManagerSc = monsterManagerTr.GetComponent <MonsterManager>(); //monsterCtrl 스크립트에 접근 monsterCtrl = transform.GetComponent <MonsterCtrl>(); //현재 몬스터의 정보 currentInfo = new MonsterInfo(monsterManagerSc.monsterInfos[1].Name, monsterManagerSc.monsterInfos[1].Hp, monsterManagerSc.monsterInfos[1].Atk, monsterManagerSc.monsterInfos[1].Def, monsterManagerSc.monsterInfos[1].Dex, monsterManagerSc.monsterInfos[1].Exp, monsterManagerSc.monsterInfos[1].Prefab, monsterManagerSc.monsterInfos[1].MonsterAni); //몬스터 모아놓을 곳 접근 frogHiveTag = FindTag.getInstance().frogHive; frogHiveTr = Find.getInstance().FindTagTransform(frogHiveTag); //애니메이션 제어 하기위해 접근 ani = transform.GetChild(0).GetComponent <Animation>(); //아이템 정보에 접근하기위해 접근 databaseTag = FindTag.getInstance().dataBase; databaseTr = Find.getInstance().FindTagTransform(databaseTag); itemManagerSc = databaseTr.GetComponent <ItemManager>(); }
void Start() { fenceFL = GameObject.FindGameObjectWithTag("FenceFL"); fenceBR = GameObject.FindGameObjectWithTag("FenceBR"); target = playerTr.gameObject; monsterManagerTag = FindTag.getInstance().monsterManager; monsterManagerTr = Find.getInstance().FindTagTransform(monsterManagerTag); monsterManagerSc = monsterManagerTr.GetComponent <MonsterManager>(); monsterCtrl = transform.GetComponent <MonsterCtrl>(); currentInfo = new MonsterInfo(monsterManagerSc.monsterInfos[0].Name, monsterManagerSc.monsterInfos[0].Hp, monsterManagerSc.monsterInfos[0].Atk, monsterManagerSc.monsterInfos[0].Def, monsterManagerSc.monsterInfos[0].Dex, monsterManagerSc.monsterInfos[0].Exp, monsterManagerSc.monsterInfos[0].Prefab, monsterManagerSc.monsterInfos[0].MonsterAni); bDragonDeadTag = FindTag.getInstance().bDragonDead; bDragonDeadTr = Find.getInstance().FindTagTransform(bDragonDeadTag); bDragonHiveTag = FindTag.getInstance().bDragonHive; bDragonHiveTr = Find.getInstance().FindTagTransform(bDragonHiveTag); ani = transform.GetChild(0).GetComponent <Animation>(); databaseTag = FindTag.getInstance().dataBase; databaseTr = Find.getInstance().FindTagTransform(databaseTag); itemManagerSc = databaseTr.GetComponent <ItemManager>(); }
private void ShortAttack() { GameObject target = GetTargetMonster(); if (target != null) { MonsterCtrl monCtrl = target.gameObject.GetComponent <MonsterCtrl>(); if (monCtrl) { if (monCtrl.IsFree()) { if (mShortAttackTar == null) { mTarForShortAtk = FindSafePosition(target); if (mTarForShortAtk != Vector3.zero) { mShortAttackTar = target; Debug.Log("------------short atk set mShortAttackTar"); mCurPosWhenShortAtk = transform.position; // transform.position = mTarForShortAtk; mIsDoingShortAttack = true; } } } } } }
private Vector3 FindSafePosition(GameObject target) { Vector3 result = transform.position; Vector3 dir = transform.position - target.transform.position; dir.Normalize(); dir *= -8.0f; dir.y = 0.0f; // reset Y result = target.transform.position - dir; GameObject[] listObject = GameObject.FindGameObjectsWithTag("TAG_MONSTER"); foreach (GameObject obj in listObject) { MonsterCtrl mCtrl = obj.gameObject.GetComponent <MonsterCtrl>(); if ((mCtrl != null) && (target != obj)) { float distance = Vector3.Distance(result, obj.gameObject.transform.position); if (distance <= mCtrl.ATTACK_RANGE) { result = Vector3.zero; break; } } } return(result); }
private void Awake() { _monsterCtrl = GetComponentInParent <MonsterCtrl>(); _monsterProperty = new MonsterProperty { Hp = 100, Damage = 5, }; }
void OnTriggerEnter(Collider other) { MonsterCtrl mo = other.GetComponent <MonsterCtrl>(); if (mo != null) { mo.Damage(); } }
void OnTriggerEnter(Collider other) //if collided by Monster, get damage that monster has, make monster's hp to 0 to destroy it { if (other.gameObject.CompareTag("Monster")) { Debug.Log("Monster reaches Castle"); MonsterCtrl mc = other.gameObject.GetComponent <MonsterCtrl>(); HP -= mc.dmg; mc.hp = 0; sys.SendMessage("changeHealth", HP); } }
private void OnTriggerEnter(Collider other) { if (other.tag == "Monster") { MonsterCtrl zombie = other.GetComponent <MonsterCtrl>(); if (zombie != null) { zombie.GetDamage(attackAmount); } swordAudio.PlayOneShot(swordClip); } }
//public float sightLengthRange = 15.0f; // 보스 시야 거리 //public float sightAngleRange = 40.0f; // 보스 시야각 IEnumerator UseFlashing() { GameObject oMon = GameObject.Find("Monster"); Animator animMon = oMon.GetComponentInChildren <Animator>(); MonsterCtrl monsterCtrl = oMon.GetComponent <MonsterCtrl>(); //animMon.Stop(); animMon.Play("Breath"); monsterCtrl.sightLengthRange = 0.0f; yield return(new WaitForSeconds(3f)); monsterCtrl.sightLengthRange = 15.0f; yield return(null); }
private void OnTriggerEnter(Collider other) { if (other.CompareTag("Monster")) { BulletSpawner bulletSpawner = other.GetComponent <BulletSpawner>(); bulletSpawner?.GetDamage(attackAmount); Destroy(gameObject); } if (other.CompareTag("Monster2")) { MonsterCtrl ailen = other.GetComponent <MonsterCtrl>(); ailen?.GetDamage(attackAmount); Destroy(gameObject); } }
public void Run(MonsterCtrl monster) { if (monster.Detect()) { if (monster.IsAttackable()) { monster.Attack(); } else { monster.ChangeState(StateManager.GetState(StateManager.State.Trace)); } } else { monster.ChangeState(StateManager.GetState(StateManager.State.Patrol)); } }
public void OnStageStart() { m_state = STATE.NORMAL; transform.position = m_spawnPosition; GameObject[] enemys = GameObject.FindGameObjectsWithTag("Enemy"); for (int enemyCnt = 0; enemyCnt < enemys.Length; enemyCnt++) { MonsterCtrl mc = enemys[enemyCnt].GetComponent <MonsterCtrl>(); if (mc != null) { if (mc.m_aiType == MonsterCtrl.AI_TYPE.TRACER) { m_tracer = mc.transform; } } } m_player = GameObject.FindGameObjectWithTag("Player").transform; }
public void Run(MonsterCtrl monster) { if (monster.Detect()) { //Debug.Log("Patrol Detect True"); if (monster.GetTargetVisible()) { //Debug.Log("Patrol GetTargetVisible True"); if (monster.IsAttackable()) { //Debug.Log("Patrol IsAttackable True"); monster.ChangeState( StateManager.GetIState(StateManager.State.Attack)); } else { //Debug.Log("Patrol IsAttackable False"); monster.Move(); monster.ChangeState( StateManager.GetIState(StateManager.State.Trace)); } } else { // TODO: Set CheckPoint to Target Position monster.SetCheckpoint(Vector3.one); monster.Move(); monster.ChangeState( StateManager.GetIState(StateManager.State.Trace)); } } else { // PaceAround function is moving distance in just during one frame monster.PaceAround(); //monster.ChangeState(StateManager.GetIState(StateManager.State.Patrol)); } }
private void ShortAttackEnd() { MonsterCtrl monCtr = mShortAttackTar.gameObject.GetComponent <MonsterCtrl>(); if (monCtr) { monCtr.TakeDame(4); } Animator anim = m_MC.gameObject.GetComponent <Animator>(); if (anim) { anim.Play("MC_Idle"); //anim.Play("MC_Run"); } Debug.Log("------------end short atk"); // Invoke("StartMoveBack", 0.5f); mShortAttackTar = null; }
private void Attack(E_Weapon_Type type) { if (mWSpawner && (mNumberOfWeapon > 0)) { GameObject target = GetTargetMonster(); if (target != null) { MonsterCtrl monCtrl = target.gameObject.GetComponent <MonsterCtrl>(); if (monCtrl) { Vector3 velocity = target.transform.position - m_WeaponPos.position; velocity.Normalize(); //============ rotate to target=========== float rot_y = Mathf.Atan2(velocity.x, velocity.z) * Mathf.Rad2Deg; //transform.rotation = Quaternion.Euler(0f, 0f, rot_z - 90); Quaternion targetRot = Quaternion.Euler(0f, rot_y - 90, 0f); transform.rotation = targetRot; // Quaternion.RotateTowards(transform.rotation, targetRot, 100); //=============================================== if (monCtrl.IsFree() && mShortAttackTar == target) // short attack { } else { Animator anim = m_MC.gameObject.GetComponent <Animator>(); if (anim) { anim.Play("MC_Attack_Long"); Invoke("SpawnWeapon", 0.4f); } //mWSpawner.Spawn(type, pos, velocity); } } } } }
void ExpBarrel() { GameObject Explosion = (GameObject)Instantiate(expEffect, tr.position, Quaternion.identity); Collider[] colls = Physics.OverlapSphere(tr.position, expRadius); foreach (Collider coll in colls) { Rigidbody rbody = coll.GetComponent <Rigidbody>(); if (rbody != null) { rbody.mass = 1.0f; rbody.AddExplosionForce(1000.0f, tr.position, expRadius, 300.0f); } if (coll.tag == "MONSTER") { MonsterCtrl monsterCtrl = coll.GetComponent <MonsterCtrl>(); monsterCtrl.monsterDie(); } } Destroy(this.gameObject, 5.0f); Destroy(Explosion, Explosion.GetComponent <ParticleSystem>().duration + 0.1f); }
void SlideAttack(MonsterCtrl msc) { msc.anim.SetTrigger("Dead"); }
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { Attack = animator.gameObject.GetComponent <MonsterCtrl>(); Attack.SetStopMon(true); }
private MonsterCtrl MonsterHP;//Monster의 HP정보를 가져오기위한 변수 //private SoldierCtrl SoldierHP;//Soldier의 HP정보를 가져오기위한 변수 //private TurretCtrl TurretHP;//Soldier의 HP정보를 가져오기위한 변수 void Start() { MonsterHP = gameObject.GetComponent <MonsterCtrl>();//HP정보를 가져오기위해서 }
void Start() { MonsterHP = gameObject.GetComponent <MonsterCtrl>();//HPの情報をを持ってくるための }
public void OnStageStart() { // 적 전부를 삭제. GameObject[] enemys = GameObject.FindGameObjectsWithTag("Enemy"); for (int i = 0; i < enemys.Length; i++) { Destroy(enemys[i]); } // 그 외 오브젝트 삭제. TreasureGenerator treasureGenInst = FindObjectOfType(typeof(TreasureGenerator)) as TreasureGenerator; if (treasureGenInst != null) { Destroy(treasureGenInst.gameObject); } GameObject.Find("Map").SendMessage("OnStageStart"); if (!DISABLE_MONSTER_SPAWN) { // 적 스폰. for (int i = 1; i < 5; i++) { Vector3 pos = m_map.GetSpawnPoint(i); if (pos == Vector3.zero) { // 이 타입의 적은 만들지 않는다. continue; } GameObject e = (GameObject)Instantiate(m_enemyPrefab, pos, Quaternion.identity); MonsterCtrl mc = e.GetComponent <MonsterCtrl>(); mc.m_aiType = (MonsterCtrl.AI_TYPE)((int)MonsterCtrl.AI_TYPE.TRACER + i - 1); mc.SetSpawnPosition(m_map.GetSpawnPoint(Map.SPAWN_POINT_TYPE.BLOCK_SPAWN_POINT_PLAYER + i)); mc.SetDifficulty(m_stageNo); mc.SendMessage("OnStageStart"); } } // 스테이지 번호 갱신. Hud.get().SetStageNumber(m_stageNo); // 보물 스폰. Vector3 trasurePos = m_map.GetSpawnPoint(Map.SPAWN_POINT_TYPE.BLOCK_SPAWN_TREASURE); if (trasurePos != Vector3.zero) { Instantiate(m_treasureGen, trasurePos, Quaternion.identity); } Hud.get().DrawStageClear(false); GameObject.Find("Player").SendMessage("OnStageStart"); Hud.get().DrawStageStart(true); HitStop(true); // BGM 재생. m_audio.StopAll(); m_audio.PlayLoop(m_bgmClip, 1.0f, 0.0f); StartCoroutine("StageStartWait"); }
private void Start() { _animator = transform.GetChild(0).GetComponent <Animator>(); _monsterCtrl = GetComponent <MonsterCtrl>(); }