local BoxMissileShape = {} local FP=FP local _v1Temp = FP.newV1(0) local _posTemp = FP.newV2(0, 0) local _dirTemp = FP.newV2(0, 0) local _rightTemp = FP.newV2(0, 0) local _toHitTemp = FP.newV2(0, 0) local _entityPosTemp = FP.newV2(0, 0) function BoxMissileShape.SetMissileTrigger(data,pos,dir) _posTemp:Reset(pos) _dirTemp:Reset(dir) _rightTemp.x:Reset(dir.z) _rightTemp.z:Reset(dir.x):Negative() local dirClone = _dirTemp:cloneV2() local rightClone = _rightTemp:cloneV2() if data then _posTemp:Add(dirClone:Mul(data.OffsetZ)) _posTemp:Add(rightClone:Mul(data.OffsetX)) end FP.releaseV2(dirClone) FP.releaseV2(rightClone) end function BoxMissileShape.CanEnterTrigger(missile, hitEntityPos, hitEntityRadius) if hitEntityRadius and hitEntityRadius > 0 then _toHitTemp:Reset(hitEntityPos):Sub(_posTemp) FP.V2.Magnitude(_toHitTemp, _v1Temp) _v1Temp:Sub(hitEntityRadius) if _v1Temp < FP.Const.Zero then _v1Temp:Reset() end _toHitTemp:Normalize() _toHitTemp:Mul(_v1Temp) _entityPosTemp:Reset(_posTemp):Add(_toHitTemp) else _entityPosTemp:Reset(hitEntityPos) end return FP.V2.IsInRectRange(_entityPosTemp,_posTemp,_dirTemp,missile:GetShapeParam1(),missile:GetShapeParam2()) end ------------重写子弹宽高(新增机制)------------------- function BoxMissileShape.SetMissileWidth(missile,value) missile:OverrideShapeParam1(value) end function BoxMissileShape.SetMissileHeight(missile,value) missile:OverrideShapeParam2(value) end return BoxMissileShape