コード例 #1
0
    public override void Attack()
    {
        Collider[] targets = SearchAttactTarget();
        if (targets == null || targets[0].transform == null)
        {
            return;
        }
        switch (m_attackLevel)
        {
        case ModelAttackLevel.Normal:
        case ModelAttackLevel.SkillOne:
            PlaySkillAnimator(Vector3.zero);
            break;

        case ModelAttackLevel.SkillTwo:
        case ModelAttackLevel.SkillThree:
            PlaySkillAnimator(targets[0].transform.position);
            break;
        }
        for (int i = 0; i < targets.Length; i++)
        {
            if (targets[i] == null)
            {
                continue;
            }
            ModelAttackData attackData = new ModelAttackData(RoleType.Player, (int)PlayerType.Master, m_attackLevel, m_gameObject.name, targets[i].name);
            EventManager.Dispatch(GameMoudle.Monster, GameEvent.Type.Damage, attackData);
        }
    }
コード例 #2
0
 public override void Attack()
 {
     Collider[] colliders = Physics.OverlapSphere(m_transform.position, m_attackDis, LayerMask.GetMask(GameLayerInfo.Player.ToString()));
     for (int i = 0; i < colliders.Length; i++)
     {
         if (colliders[i].tag != GameTagInfo.Player.ToString())
         {
             continue;
         }
         Vector3 selfToTarget = colliders[i].transform.position - m_transform.position;
         if (selfToTarget.magnitude > m_attackDis)
         {
             continue;
         }
         float selfToTargetAngle = Vector3.Angle(selfToTarget, m_transform.forward);
         if (selfToTargetAngle > m_attackAngle)
         {
             continue;
         }
         ModelAttackData attackData = new ModelAttackData(RoleType.Monster,
                                                          (int)m_type, m_attackLevel, gameObject.name, colliders[i].name);
         EventManager.Dispatch(GameMoudle.Player, GameEvent.Type.Damage, attackData);
         return;
     }
 }
コード例 #3
0
    private void OnTriggerEnter(Collider collider)
    {
        ModelAttackData attackData = new ModelAttackData(RoleType.Player, (int)PlayerType.Master,
                                                         ModelAttackLevel.Normal, m_gameObject.name, collider.name);

        EventManager.Dispatch(GameMoudle.Monster, GameEvent.Type.Damage, attackData);
    }
コード例 #4
0
    public override float Damage(ModelAttackData data)
    {
        float percent = base.Damage(data);

        DebugTool.Log("ModelPlayer::Damage " + m_healthPoint.ToString());
        return(percent);
    }
コード例 #5
0
    private void Damage(object arg)
    {
        ModelAttackData data    = (ModelAttackData)arg;
        float           percent = m_player.Damage(data);

        m_playerView.UpdateHP(percent);
    }
コード例 #6
0
    public override float Damage(ModelAttackData data)
    {
        float percent = base.Damage(data);

        DebugTool.Log("ModelMonster::Damage " + m_healthPoint.ToString());
        if (m_target == null)
        {
            m_target = GameSceneManager.GetNode <Transform>(data.sender);
        }
        m_selectObj.SetActive(true);
        TimerManager.Register(1, () => m_selectObj.SetActive(false));
        return(percent);
    }
コード例 #7
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);
    }
コード例 #8
0
    public virtual float Damage(ModelAttackData data)
    {
        int damage = data.Damage;
        KeyValuePair <Vector3, int> message = new KeyValuePair <Vector3, int>(transform.position, damage);

        EventManager.Dispatch(GameMoudle.Player, GameEvent.Type.ShowDamageText, message);
        m_healthPoint -= damage;
        SRoleState.Type state;
        if (IsHPZero)
        {
            state = SRoleState.Type.SRoleDeath;
        }
        else
        {
            state = SRoleState.Type.SRoleDamage;
        }
        State = state;
        PlayDamageEffect();
        return(m_healthPoint.Percent);
    }