コード例 #1
0
ファイル: AttackPattern.cs プロジェクト: slb1988/agame
        public static void CylinderCollisionDetectTargetLockedAttack(string attackName, ConfigEntityAttackPattern patternConfig, IAttacker attacker, LayerMask layerMask)
        {
            Vector3 xZPosition;
            CylinderCollisionDetectTargetLocked locked = (CylinderCollisionDetectTargetLocked)patternConfig;

            if ((attacker.AttackTarget != null) && attacker.AttackTarget.IsActive())
            {
                xZPosition = attacker.AttackTarget.XZPosition;
            }
            else
            {
                xZPosition = attacker.XZPosition;
            }
            List <CollisionResult> results = CollisionDetectPattern.CylinderCollisionDetectBySphere(attacker.XZPosition, xZPosition, locked.Radius * (1f + attacker.Evaluate(locked.RadiusRatio)), locked.Height, layerMask);

            TestAndActHit(attackName, patternConfig, attacker, results);
        }
コード例 #2
0
ファイル: AttackPattern.cs プロジェクト: slb1988/agame
        public static void FanCollisionDetectAttack(string attackName, ConfigEntityAttackPattern patternConfig, IAttacker attacker, LayerMask layerMask)
        {
            FanCollisionDetect     detect         = (FanCollisionDetect)patternConfig;
            Vector3                fanCenterPoint = new Vector3(attacker.XZPosition.x, (attacker.XZPosition.y + detect.CenterYOffset) + (!detect.FollowRootNodeY ? 0f : attacker.GetAttachPoint("RootNode").transform.position.y), attacker.XZPosition.z);
            List <CollisionResult> results        = CollisionDetectPattern.MeleeFanCollisionDetectBySphere(fanCenterPoint, detect.OffsetZ, attacker.FaceDirection, detect.Radius * (1f + attacker.Evaluate(detect.RadiusRatio)), detect.FanAngle, detect.MeleeRadius, detect.MeleeFanAngle, layerMask);

            TestAndActHit(attackName, patternConfig, attacker, results);
        }