[
我在研究让巡航导弹从水面亚迪兰提斯的鱼雷发射孔中打出来。:L
[
这个很容易,但出来的很可能也是横着发射~
[
怎么改?:handshake 快告诉我。横着发射也成。
[
拿T2SubKiller作例:
XRS0204_unit.bp
UnitBlueprint {
AI = {
GuardReturnRadius = 130,
TargetBones = {
'XRS0204',
},
},
Audio = {
AmbientMove = Sound {
Bank = 'XRS',
Cue = 'XRS0204_Move_Loop',
LodCutoff = 'UnitMove_LodCutoff',
},
AmbientMoveSub = Sound {
Bank = 'XRS',
Cue = 'XRS0204_Move_Loop_UW',
LodCutoff = 'UnitMove_LodCutoff',
},
Killed = Sound {
Bank = 'URSDestroy',
Cue = 'URS0203_Destroy',
LodCutoff = 'UnitMove_LodCutoff',
},
StartMove = Sound {
Bank = 'XRS',
Cue = 'XRS0204_Move_Start',
LodCutoff = 'UnitMove_LodCutoff',
},
StartMoveSub = Sound {
Bank = 'XRS',
Cue = 'XRS0204_Move_Start_UW',
LodCutoff = 'UnitMove_LodCutoff',
},
StopMove = Sound {
Bank = 'XRS',
Cue = 'XRS0204_Move_Stop',
LodCutoff = 'UnitMove_LodCutoff',
},
StopMoveSub = Sound {
Bank = 'XRS',
Cue = 'XRS0204_Move_Stop_UW',
LodCutoff = 'UnitMove_LodCutoff',
},
SubmergeStart = Sound {
Bank = 'URS',
Cue = 'URS_Sub_Submerge',
LodCutoff = 'UnitMove_LodCutoff',
},
SurfaceStart = Sound {
Bank = 'URS',
Cue = 'URS_Sub_Surface',
LodCutoff = 'UnitMove_LodCutoff',
},
UISelection = Sound {
Bank = 'Interface',
Cue = 'Cybran_Select_Sub',
LodCutoff = 'UnitMove_LodCutoff',
},
},
Buffs = {
Regen = {
Level1 = 2,
Level2 = 4,
Level3 = 6,
Level4 = 8,
Level5 = 10,
},
},
BuildIconSortPriority = 20,
Categories = {
'PRODUCTFA',
'SELECTABLE',
'BUILTBYTIER2FACTORY',
'BUILTBYTIER3FACTORY',
'CYBRAN',
'MOBILE',
'NAVAL',
'TECH2',
'DIRECTFIRE',
'ANTIMISSILE',
'SUBMERSIBLE',
'VISIBLETORECON',
'RECLAIMABLE',
'T2SUBMARINE',
'OVERLAYSONAR',
'OVERLAYDEFENSE',
'OVERLAYANTINAVY',
},
CollisionOffsetY = -0.25,
Defense = {
AirThreatLevel = 0,
ArmorType = 'Normal',
EconomyThreatLevel = 0,
Health = 1430,
MaxHealth = 1430,
RegenRate = 0,
SubThreatLevel = 9,
SurfaceThreatLevel = 0,
},
Description = '<LOC xrs0204_desc>Submarine Killer',
Display = {
Abilities = {
'<LOC ability_personalstealth>Personal Stealth',
'<LOC ability_sonar>Sonar',
'<LOC ability_submersible>Submersible',
'<LOC ability_torpedo>Torpedoes',
'<LOC ability_torpedodef>Torpedo Defense',
},
IdleEffects = {
Sub = {
Effects = {
{
Bones = {
'Torpedo_Muzzle02',
'XRS0204',
},
Type = 'UnderWater01',
},
},
},
Water = {
Effects = {
{
Bones = {
'XRS0204',
},
Scale = 0.4,
Type = 'SeaIdle01',
},
},
},
},
Mesh = {
IconFadeInZoom = 130,
LODs = {
{
LODCutoff = 100,
ShaderName = 'Insect',
},
{
AlbedoName = 'xrs0204_lod1_albedo.dds',
LODCutoff = 215,
ShaderName = 'Insect',
SpecularName = 'xrs0204_lod1_specteam.dds',
},
},
},
MotionChangeEffects = {
SubBottomUp = {
Effects = {
{
Bones = {
'XRS0204',
},
Type = 'Surface01',
},
},
},
WaterTopDown = {
Effects = {
{
Bones = {
'XRS0204',
},
Type = 'Submerge01',
},
},
},
},
MovementEffects = {
Sub = {
Effects = {
{
Bones = {
'Flare_Muzzle04',
},
Scale = 2,
Type = 'BackWake',
},
},
},
Water = {
Effects = {
{
Bones = {
'Torpedo_Muzzle01',
},
Scale = 0.7,
Type = 'LeftFrontWake',
},
{
Bones = {
'Torpedo_Muzzle02',
},
Scale = 0.7,
Type = 'RightFrontWake',
},
{
Bones = {
'Flare_Muzzle04',
},
Offset = {
0,
0,
-0.3,
},
Scale = 0.5,
Type = 'BackWake',
},
},
},
},
PlaceholderMeshName = 'UXS0001',
SpawnRandomRotation = true,
UniformScale = 0.04,
},
Economy = {
BuildCostEnergy = 8800,
BuildCostMass = 1100,
BuildTime = 4400,
MaintenanceConsumptionPerSecondEnergy = 30,
},
Footprint = {
SizeX = 2,
SizeY = 0.5,
SizeZ = 3,
},
General = {
Category = 'Submarine',
Classification = 'RULEUC_MilitaryShip',
CommandCaps = {
RULEUCC_Attack = true,
RULEUCC_CallTransport = false,
RULEUCC_Capture = false,
RULEUCC_Dive = true,
RULEUCC_Guard = true,
RULEUCC_Move = true,
RULEUCC_Nuke = false,
RULEUCC_Patrol = true,
RULEUCC_Reclaim = false,
RULEUCC_Repair = false,
RULEUCC_RetaliateToggle = true,
RULEUCC_Stop = true,
RULEUCC_Transport = false,
},
FactionName = 'Cybran',
Icon = 'sea',
OrderOverrides = {
RULEUTC_StealthToggle = {
bitmapId = 'stealth-personal',
helpText = 'toggle_stealth_personal',
},
},
TechLevel = 'RULEUTL_Basic',
ToggleCaps = {
RULEUTC_StealthToggle = true,
},
UnitName = '<LOC xrs0204_name>Barracuda',
UnitWeight = 1,
},
Intel = {
RadarStealth = true,
SonarRadius = 60,
SonarStealth = true,
VisionRadius = 32,
WaterVisionRadius = 32,
},
Interface = {
HelpText = '<LOC xrs0204_help>Submarine Killer',
},
LifeBarHeight = 0.075,
LifeBarOffset = 1.2,
LifeBarSize = 0.75,
Physics = {
BackUpDistance = 5,
BankingSlope = 0,
BuildOnLayerCaps = {
LAYER_Air = false,
LAYER_Land = false,
LAYER_Orbit = false,
LAYER_Seabed = false,
LAYER_Sub = true,
LAYER_Water = false,
},
CatchUpAcc = 10,
DragCoefficient = 0.2,
Elevation = -1.5,
MaxAcceleration = 6.5,
MaxBrake = 6.5,
MaxSpeed = 6.5,
MaxSpeedReverse = 6.5,
MaxSteerForce = 5,
MinSpeedPercent = 0,
MotionType = 'RULEUMT_SurfacingSub',
TurnRadius = 5,
TurnRate = 80,
},
SelectionSizeX = 0.6,
SelectionSizeZ = 1.8,
SelectionThickness = 0.37,
SizeX = 0.6,
SizeY = 0.5,
SizeZ = 3,
StrategicIconName = 'icon_sub2_antinavy',
StrategicIconSortPriority = 165,
Veteran = {
Level1 = 8,
Level2 = 16,
Level3 = 24,
Level4 = 32,
Level5 = 40,
},
Weapon = {
{
Audio = {
Fire = Sound {
Bank = 'XRS_Weapon',
Cue = 'XRS0204_Torpedo_Nanite',
LodCutoff = 'Weapon_LodCutoff',
},
},
BallisticArc = 'RULEUBA_None',
CollideFriendly = false,
Damage = 15,
DamageType = 'Normal',
DisplayName = 'Nanite Torpedo',
DoTPulses = 5,
DoTTime = 0.5,
FireTargetLayerCapsTable = {
Sub = 'Seabed|Sub|Water',
Water = 'Seabed|Sub|Water',
},
FiringTolerance = 2,
Label = 'Torpedo01',
MaxRadius = 45,
MuzzleSalvoDelay = 0.4,
MuzzleSalvoSize = 6,
MuzzleVelocity = 5,
ProjectileId = '/projectiles/CANTorpedoNanite01/CANTorpedoNanite01_proj.bp',
ProjectileLifetime = 7,
ProjectilesPerOnFire = 3,
RackBones = {
{
MuzzleBones = {
'Torpedo_Muzzle01',
'Torpedo_Muzzle02',
'Torpedo_Muzzle03',
},
RackBone = 'Torpedo_Muzzle01',
},
},
RackFireTogether = false,
RackRecoilDistance = 0,
RackReloadTimeout = 10,
RackSalvoChargeTime = 0,
RackSalvoReloadTime = 0,
RackSalvoSize = 1,
RackSlavedToTurret = false,
RangeCategory = 'UWRC_AntiNavy',
RateOfFire = 0.25,
SlavedToBody = true,
SlavedToBodyArcRange = 10,
TargetCheckInterval = 0.4,
TargetPriorities = {
'SPECIALHIGHPRI',
'MOBILE',
'STRUCTURE DEFENSE',
'SPECIALLOWPRI',
'ALLUNITS',
},
TargetRestrictDisallow = 'UNTARGETABLE, HOVER',
TrackingRadius = 1.15,
Turreted = false,
WeaponCategory = 'Anti Navy',
},
{
Audio = {
Fire = Sound {
Bank = 'XRS_Weapon',
Cue = 'XRS0204_Anti_Torpedo_Flare',
LodCutoff = 'Weapon_LodCutoff',
},
},
BallisticArc = 'RULEUBA_None',
CollideFriendly = false,
Damage = 2,
DamageType = 'Normal',
DepthCharge = {
Radius = 5,
},
DisplayName = 'Anti-Torpedo Flare',
FireTargetLayerCapsTable = {
Sub = 'Seabed|Sub|Water',
},
FiringTolerance = 2,
Label = 'AntiTorpedo01',
MaxRadius = 25,
MuzzleSalvoDelay = 0.2,
MuzzleSalvoSize = 4,
MuzzleVelocity = 5,
ProjectileId = '/projectiles/CIMAntiTorpedo01/CIMAntiTorpedo01_proj.bp',
ProjectileLifetime = 3,
RackBones = {
{
MuzzleBones = {
'Flare_Muzzle01',
'Flare_Muzzle02',
'Flare_Muzzle03',
'Flare_Muzzle04',
},
RackBone = 'Flare_Muzzle01',
},
},
RackFireTogether = false,
RackRecoilDistance = 0,
RackReloadTimeout = 0,
RackSalvoChargeTime = 0,
RackSalvoReloadTime = 0,
RackSalvoSize = 1,
RackSlavedToTurret = false,
RangeCategory = 'UWRC_Countermeasure',
RateOfFire = 0.2,
TargetCheckInterval = 0.4,
TargetRestrictDisallow = 'UNTARGETABLE',
TargetRestrictOnlyAllow = 'TORPEDO',
TargetType = 'RULEWTT_Projectile',
TrackingRadius = 1.5,
TurretDualManipulators = false,
TurretPitch = 0,
TurretPitchRange = 0,
TurretPitchSpeed = 0,
TurretYaw = 0,
TurretYawRange = 0,
TurretYawSpeed = 0,
Turreted = false,
WeaponCategory = 'Defense',
WeaponRepackTimeout = 0,
WeaponUnpacks = false,
},
{
Audio = {
Fire = Sound {
Bank = 'URLWeapon',
Cue = 'URL0111_Missile_Cruise',
LodCutoff = 'Weapon_LodCutoff',
},
},
BallisticArc = 'RULEUBA_None',
CollideFriendly = false,
CountedProjectile = false,
Damage = 200,
DamageFriendly = true,
DamageRadius = 4,
DamageType = 'Normal',
DisplayName = 'Loa Tactical Missile',
FireTargetLayerCapsTable = {
Water = 'Land|Water|Seabed',
},
FiringTolerance = 0,
Label = 'CruiseMissile1',
MaxRadius = 120,
MinRadius = 30,
MuzzleSalvoDelay = 0.2,
MuzzleSalvoSize = 4,
MuzzleVelocity = 5,
ProjectileId = '/projectiles/CIFMissileTactical01/CIFMissileTactical01_proj.bp',
ProjectileLifetime = 50,
ProjectilesPerOnFire = 1,
RackBones = {
{
MuzzleBones = {
'Flare_Muzzle01',
'Flare_Muzzle02',
'Flare_Muzzle03',
'Flare_Muzzle04',
},
RackBone = 'Flare_Muzzle01',
},
},
RackFireTogether = false,
RackRecoilDistance = 0,
RackReloadTimeout = 10,
RackSalvoChargeTime = 0,
RackSalvoReloadTime = 0,
RackSalvoSize = 1,
RackSlavedToTurret = false,
RangeCategory = 'UWRC_IndirectFire',
RateOfFire = 0.2,
TrackingRadius = 1.15,
TargetCheckInterval = 1,
TargetPriorities = {
'SPECIALHIGHPRI',
'STRUCTURE DEFENSE',
'SPECIALLOWPRI',
'ALLUNITS',
},
TargetRestrictDisallow = 'UNTARGETABLE',
Turreted = false,
WeaponCategory = 'Missile',
},
},
}
XRS0204_script.lua
local CSubUnit = import('/lua/cybranunits.lua').CSubUnit
local WeaponsFile = import('/lua/cybranweapons.lua')
local CANNaniteTorpedoWeapon = WeaponsFile.CANNaniteTorpedoWeapon
local CIFSmartCharge = WeaponsFile.CIFSmartCharge
local CybranWeapons = import('/lua/cybranweapons.lua')
local CIFMissileLoaWeapon = CybranWeapons.CIFMissileLoaWeapon
XRS0204 = Class(CSubUnit) {
DeathThreadDestructionWaitTime = 0,
Weapons = {
Torpedo01 = Class(CANNaniteTorpedoWeapon) {},
AntiTorpedo01 = Class(CIFSmartCharge) {},
AntiTorpedo02 = Class(CIFSmartCharge) {},
CruiseMissile1 = Class(CIFMissileLoaWeapon){},
CruiseMissile2 = Class(CIFMissileLoaWeapon){},
},
OnCreate = function(self)
CSubUnit.OnCreate(self)
self:SetMaintenanceConsumptionActive()
end,
}
TypeClass = XRS0204
能不能对各段代码做一解读,培训一下初学者。
这强的护盾。。。。。牛
最希望的是有提升AI的mod!