コード例 #1
0
    public void FireWeapon(Action _action)
    {
        new Effect(_muzzleFlash, GunTrans.position, GunTrans.rotation);
        CombatState _target = _action.Combat;

        if (_target != null)
        {
            float _coverAmount;
            if (_target.CoverAmount(GunTrans.position, out _coverAmount))
            {
                float _weaponAccuracy = _inventory.SelectedWeapon.Accuracy - _inventory.SelectedWeapon.AccuracyLoss(Vector3.Distance(transform.position, _target.transform.position));
                float _dc             = Math.Max(5f, _accuracy + _weaponAccuracy - _coverAmount - _target.Dodge);
                if (SRand.Roll(ref _rollI) <= _dc)
                {
                    _target.SetAction(new WeaponAction(ActionType.ShotBy, _inventory.SelectedWeapon, true), true);
                }
                else
                {
                }
            }
            else
            {
            }
        }
    }
コード例 #2
0
 void OnTriggerEnter(Collider _coll)
 {
     if (Util.LayerMaskContainsLayer(_collMask, _coll.gameObject.layer))
     {
         CombatState _combat = Util.GetComponentInHierarchy <CombatState>(_coll.gameObject);
         if (_combat != null && _canDamage)
         {
             if (_damageOnce)
             {
                 _canDamage = false;
             }
             _combat.SetAction(new WeaponAction(ActionType.ShotBy, _damage, true), true);
         }
     }
 }