Inheritance: MonoBehaviour
コード例 #1
0
ファイル: PlayerBullet.cs プロジェクト: babodya/Quest2_UI
    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);
    }
コード例 #2
0
    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);
    }
コード例 #3
0
ファイル: TraceState.cs プロジェクト: km9173/AI-Studty
 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));
         }
     }
 }
コード例 #4
0
ファイル: Frog.cs プロジェクト: crisias/Forest-Original
 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>();
 }
コード例 #5
0
ファイル: BDragon.cs プロジェクト: crisias/Forest-Original
    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>();
    }
コード例 #6
0
    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;
                        }
                    }
                }
            }
        }
    }
コード例 #7
0
    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);
    }
コード例 #8
0
 private void Awake()
 {
     _monsterCtrl     = GetComponentInParent <MonsterCtrl>();
     _monsterProperty = new MonsterProperty
     {
         Hp     = 100,
         Damage = 5,
     };
 }
コード例 #9
0
    void OnTriggerEnter(Collider other)
    {
        MonsterCtrl mo = other.GetComponent <MonsterCtrl>();

        if (mo != null)
        {
            mo.Damage();
        }
    }
コード例 #10
0
 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);
     }
 }
コード例 #11
0
ファイル: sword.cs プロジェクト: dklee159/MazeEscape
 private void OnTriggerEnter(Collider other)
 {
     if (other.tag == "Monster")
     {
         MonsterCtrl zombie = other.GetComponent <MonsterCtrl>();
         if (zombie != null)
         {
             zombie.GetDamage(attackAmount);
         }
         swordAudio.PlayOneShot(swordClip);
     }
 }
コード例 #12
0
    //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);
    }
コード例 #13
0
ファイル: PlayerBullet.cs プロジェクト: wjdtjsrms/ART_UNITY
 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);
     }
 }
コード例 #14
0
 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));
     }
 }
コード例 #15
0
    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;
    }
コード例 #16
0
    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));
        }
    }
コード例 #17
0
    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;
    }
コード例 #18
0
    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);
                    }
                }
            }
        }
    }
コード例 #19
0
    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);
    }
コード例 #20
0
ファイル: PlayerCntrl.cs プロジェクト: nassung/FinalFSM
 void SlideAttack(MonsterCtrl msc)
 {
     msc.anim.SetTrigger("Dead");
 }
コード例 #21
0
 // 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);
 }
コード例 #22
0
    private MonsterCtrl MonsterHP;//Monster의 HP정보를 가져오기위한 변수
    //private SoldierCtrl SoldierHP;//Soldier의 HP정보를 가져오기위한 변수
    //private TurretCtrl TurretHP;//Soldier의 HP정보를 가져오기위한 변수


    void Start()
    {
        MonsterHP = gameObject.GetComponent <MonsterCtrl>();//HP정보를 가져오기위해서
    }
コード例 #23
0
 void Start()
 {
     MonsterHP = gameObject.GetComponent <MonsterCtrl>();//HPの情報をを持ってくるための
 }
コード例 #24
0
    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");
    }
コード例 #25
0
 private void Start()
 {
     _animator    = transform.GetChild(0).GetComponent <Animator>();
     _monsterCtrl = GetComponent <MonsterCtrl>();
 }