예제 #1
0
    private void CreateMonster(int index, MonsterType type = MonsterType.Rubbish)
    {
        ModelMonsterData data     = GetModel <MMonsterData>().GetMonsterData(type);
        GameObject       monster  = GameObject.Instantiate(data.Prefab);
        string           nodeName = string.Concat(data.PrefabName, index);

        monster.name = nodeName;
        monster.transform.SetParent(m_parent);
        monster.transform.position = data.GetScenePostion();
        ModelMonster script = new ModelMonster(monster, data, type);

        if (m_dicNameMonster.ContainsKey(nodeName))
        {
            m_dicNameMonster[nodeName] = script;
        }
        else
        {
            m_dicNameMonster.Add(nodeName, script);
        }
        m_listMonster.Add(script);
        Vector3 screenPos = GameSceneManager.ToScreenPoint(monster.transform.position);

        script.HPPosY = ModelRoleManager.GetModelRoleHpPosY(data.PrefabName);
        float distance = GameSceneManager.DistanceToCamera(monster.transform.position);
        ModelMonsterHPData hpProcessData = new ModelMonsterHPData(monster.name, screenPos, script.HPPosY, distance);

        EventManager.Dispatch(GameMoudle.Player, GameEvent.Type.MonsterCreate, hpProcessData);
    }
예제 #2
0
    public void Damage(object arg)
    {
        ModelAttackData data    = (ModelAttackData)arg;
        ModelMonster    monster = GetMonster(data.receiver);

        if (monster == null || monster.gameObject == null)
        {
            return;
        }
        float hpPercent = monster.Damage(data);
        KeyValuePair <string, float> hpData = new KeyValuePair <string, float>(monster.gameObject.name, hpPercent);

        EventManager.Dispatch(GameMoudle.Player, GameEvent.Type.MonsterDamage, hpData);
    }