private bool collisionDetection(bool _hitFlag, float _currentTime) { if (MoveType == eMoveTypes.PARABORIC || MoveType == eMoveTypes.PARABORIC_ROTATE) { if (duration * 0.5f > _currentTime) { return(_hitFlag); } } if (!_hitFlag) { if (!InFlag) { if (Mathf.Abs(transform.position.x - FireTarget.GetPosition().x) <= (ColliderBox.size.x + FireTarget.GetColliderSize().x) * 0.5f) { if (MoveType != eMoveTypes.PARABORIC && MoveType != eMoveTypes.PARABORIC_ROTATE) { return(true); } InFlag = true; } } return(false); } return(true); }
/// <summary> /// 判断目标是否在范围内(未完成) /// </summary> /// <param name="actionParameter"></param> /// <param name="basePosition">FIXEDPOSITION</param> /// <param name="considerbodywidth"></param> /// <param name="parentLossyScale"></param> /// <param name="start"></param> /// <param name="end"></param> /// <param name="unitCtrl"></param> /// <returns></returns> private bool JudgeIsInTargetArea(ActionParameter actionParameter, Vector3 basePosition, bool considerbodywidth, float parentLossyScale, float start, float end, BasePartsData unitCtrl) { if (!unitCtrl.GetTargetable()) { return(false); } float distance = Mathf.Abs((unitCtrl.GetPosition().x - basePosition.x) / parentLossyScale); float dis2 = unitCtrl.GetBodyWidth(); if (considerbodywidth) { dis2 += Owner.BodyWidth; } if (distance >= start - 0.5f * dis2 && distance <= dis2 * 0.5f + end) { return(true); } return(actionParameter.Direction == DirectionType.ALL); }