/// <summary> /// 初始化坦克攻击组件 /// </summary> private void InitTankAttack(TankManager tank, TankModuleHead head) { TankModuleHead.AttackProperties properties = head.attackProperties; tank.tankAttack = tank.GetComponentInChildren <TankAttack>(); if (tank.tankAttack == null) { Debug.LogError("Tank Head Need 'TankAttack' Component!"); return; } tank.stateController.attackManager = tank.tankAttack; tank.tankAttack.forceSlider = tank.GetComponent <TankManager>().aimSlider; tank.tankAttack.chargingClip = properties.chargingClip; tank.tankAttack.fireClip = properties.fireClip; tank.tankAttack.ResetSliderValue(properties.minLaunchForce, properties.maxLaunchForce, properties.maxChargeTime); tank.tankAttack.damage = properties.damage; tank.tankAttack.coolDownTime = properties.coolDownTime; tank.tankAttack.CDTimer.Reset(properties.coolDownTime); System.Type type = tank.tankAttack.GetType(); if (type == typeof(TankAttackShooting)) { TankAttackShooting attack = tank.tankAttack as TankAttackShooting; //attack.ammoPool = head.attackProperties.ammoPool; attack.ammoSpawnPoint = new Point(head.ammoSpawnPoint); } else if (type == typeof(TankAttackBoxing)) { TankAttackBoxing attack = tank.tankAttack as TankAttackBoxing; attack.springBoxingGlove = headObj.GetComponentInChildren <SpringBoxingGloveManager>(); attack.launchDistance = new AnimationCurve(new Keyframe(0, 0, 0, 3.5f), new Keyframe(0.3f, 1, 0, 0)); } }