public void CheckHitList() { float mCurClipTime = mOwner.CurClipTime; for (int i = 0; i < hitList.Count; i++) { AiClipHitData hitData = hitList[i]; //只计算在攻击时间内的 if (mCurClipTime >= hitData.startTime && mCurClipTime <= hitData.startTime + hitData.lastTime) { AIHitUnit hitUnit=new AIHitUnit(); hitUnit.Init(hitData,mOwner); hitUnits.Add(hitUnit); hitList.Remove(hitData); } } }
public void CheckHitList() { float mCurClipTime = mOwner.CurClipTime; for (int i = 0; i < hitList.Count; i++) { AiClipHitData hitData = hitList[i]; //只计算在攻击时间内的 if (mCurClipTime >= hitData.startTime && mCurClipTime <= hitData.startTime + hitData.lastTime) { AIHitUnit hitUnit = new AIHitUnit(); hitUnit.Init(hitData, mOwner); hitUnits.Add(hitUnit); hitList.Remove(hitData); } } }
void UpdateHitUnits() { for (int i = 0; i < hitUnits.Count; i++) { AIHitUnit hitUnit = hitUnits[i]; if (hitUnit.ShouldDie) { hitUnit.Destroy(); hitUnits.Remove(hitUnit); break; } else { hitUnit.OnUpdate(Time.deltaTime); } } }
public bool CheckHit(AIUnit attacker, AIHitUnit hitUnit) { if (AIMgr.IsAntiCamp(attacker, this) == false) { return(false); } bool isHit = false; AiClipHitData hitData = hitUnit.mHitData; HitCheckBase hitCheck = hitData.hitCheckData; switch (hitData.hitCheckData.shapeType) { case EHitCheckShape.Capsule: case EHitCheckShape.Cylinder: { if (MathTool.CheckCylinderHit(hitUnit.pos, hitData.hitCheckData.height, hitData.hitCheckData.radius, Controller)) { isHit = true; } break; } case EHitCheckShape.Fan: { if (MathTool.CheckFanHit(hitUnit.pos, hitCheck.height, hitCheck.radius, hitCheck.angle, hitUnit.forwardDir, Controller)) { isHit = true; } break; } } if (isHit) { OnGetHit(); } return(isHit); }
public bool CheckHit(AIUnit attacker, AIHitUnit hitUnit) { if (AIMgr.IsAntiCamp(attacker, this) == false) { return false; } bool isHit = false; AiClipHitData hitData = hitUnit.mHitData; HitCheckBase hitCheck = hitData.hitCheckData; switch (hitData.hitCheckData.shapeType) { case EHitCheckShape.Capsule: case EHitCheckShape.Cylinder: { if (MathTool.CheckCylinderHit(hitUnit.pos, hitData.hitCheckData.height, hitData.hitCheckData.radius, Controller)) { isHit = true; } break; } case EHitCheckShape.Fan: { if (MathTool.CheckFanHit(hitUnit.pos, hitCheck.height, hitCheck.radius, hitCheck.angle, hitUnit.forwardDir, Controller)) { isHit = true; } break; } } if (isHit) { OnGetHit(); } return isHit; }