// fonction appelée lorsque l'arme de la tour est activée public override void Shoot() { if (Time.time - timeLastShoot > frequency) { isShooting = true; timeLastShoot = Time.time; if (projectilePoolReady.Count > 0) { go = (GameObject)projectilePoolReady[0]; go.SetActive(true); bullet = go.GetComponent(typeof(ProjectileGun)) as ProjectileGun; bullet.isExpired = false; bullet.shooter = shootFromTransform; bullet.target = null; bullet.Shoot(); projectilePoolReady.RemoveAt(0); projectilePoolActive.Add(go); } } else { isShooting = false; } }
public override void TurnOn() { base.TurnOn(); Rbody.velocity = Velocity; _gun = Vehicle.GetComponentInChildren <ProjectileGun>(); _gun.Init(_reloadTime, _shellSpeed, _rotSpeed); }
public void aumentarBalas() { GameObject gun = _getSelectedGun(); ProjectileGun scriptGun = gun.GetComponent <ProjectileGun>(); scriptGun.moreBullets(); }
private void Initialize() { CurrentState = State.Idle; _avatarCtrl = AvatarController.GetInstance(); _avatar = _avatarCtrl.Avatar; _avatar.OnSuccsefulEating += () => { Score += 1; }; _avatar.OnDeath += DeathHandler; _buildCtrl = BuildController.GetInstance(); _buildCtrl.SetMeteorController(); _taskCtrl = TaskController.GetInstance(); _taskCtrl.Avatar = _avatar; _taskCtrl.TaskCompleted += (ITask x) => Debug.Log(x); DuringDistanceTask.Avatar = _avatar.transform; _pursuitCtrl = PursuitController.GetInstance(); _pursuitCtrl.AvatarTf = _avatar.transform; _pursuitCtrl.Catched += CatchedHandler; _idGen = new IDGenerator(); _stuff = new SortedDictionary <int, GameObject>(); _mainProvider = new MultiGeneratorProvider(_stuff, _pursuitCtrl, _idGen); _mainProvider.SetIDGenerator(_idGen); _firstCarPos = new Vector2(0, 1); _firstCarDesc = new CarDescriptor(_firstCarPos, 0, 1); _playStats = new PlayStatistics(); _globStats = GlobalStatistics.GetInstance(); // Vehicle.Avatar = _avatar; ProjectileGun.SetAvatar(_avatar); _isInitialized = true; }
// Sets the projectile. public void SetupProjectile(float plt, float ps, ProjectileGun pg, float d, int s) { projectileLifeTime = plt; projectileSpeed = ps; projectileGunScript = pg; damage = d; shooterID = s; }
// fonction de mise à jour public void FixedUpdate() { for (int i = 0; i < projectilePoolActive.Count; ++i) { go = (GameObject)projectilePoolActive[i]; bullet = go.GetComponent(typeof(ProjectileGun)) as ProjectileGun; if (bullet.isActive) { if (bullet.isExpired) { bullet.isActive = false; go.SetActive(false); projectilePoolActive.RemoveAt(i); projectilePoolReady.Add(go); } else if (bullet.hasCollided) { previousTransform = bullet.transform; previousTransform.Translate(previousTransformOffset, Space.Self); raycastRay.origin = previousTransform.position; raycastRay.direction = bullet.direction; if (Physics.Raycast(raycastRay, out raycastHit) && !bullet.hasBounced) { bullet.hasBounced = true; impactPoint = raycastHit.point; impactNormal = raycastHit.normal; impactIncidence = Vector3.Angle(raycastRay.direction, impactNormal); reflectionQuaternion = Quaternion.LookRotation( Vector3.Reflect( raycastRay.direction, raycastHit.normal ) ); bullet.transform.position = impactPoint; bullet.transform.rotation = reflectionQuaternion; print("<gun impact:" + impactPoint + " incidence:" + impactIncidence + ">"); Debug.DrawRay(raycastRay.origin, raycastRay.direction, Color.grey, 1, true); } } } } }
// fonction de mise à jour public void FixedUpdate() { for(int i = 0; i < projectilePoolActive.Count; i++) { go = (GameObject)projectilePoolActive[i]; bullet = go.GetComponent(typeof(ProjectileGun)) as ProjectileGun; if(bullet.isActive) { if(bullet.isExpired) { bullet.isActive = false; go.SetActive(false); projectilePoolActive.RemoveAt(i); projectilePoolReady.Add(go); } else if(bullet.hasCollided) { previousTransform = bullet.transform; previousTransform.Translate(previousTransformOffset, Space.Self); raycastRay.origin = previousTransform.position; raycastRay.direction = bullet.direction; if(Physics.Raycast(raycastRay, out raycastHit) && !bullet.hasBounced) { bullet.hasBounced = true; impactPoint = raycastHit.point; impactNormal = raycastHit.normal; impactIncidence = Vector3.Angle(raycastRay.direction, impactNormal); reflectionQuaternion = Quaternion.LookRotation( Vector3.Reflect( raycastRay.direction, raycastHit.normal ) ); bullet.transform.position = impactPoint; bullet.transform.rotation = reflectionQuaternion; print("<gun impact:" + impactPoint + " incidence:" + impactIncidence + ">"); Debug.DrawRay(raycastRay.origin, raycastRay.direction, Color.grey, 1, true); } } } } }
void Start() { v = GetComponent <Vehicle>(); if (avatar != null) { Vehicle.Avatar = avatar; ProjectileGun.SetAvatar(avatar); Projectile.Avatar = avatar; } switch (behav) { case Behs.Simpe: v.InitBehaviour(new Vehicle.SimpleCar(speed)); break; case Behs.Police: v.InitBehaviour(new Vehicle.PoliceCar(speed, sideSpeed, scanRadius)); break; case Behs.Wobbling: v.InitBehaviour(new Vehicle.WobblingCar(speed, halfPeriod, 2.5f, true)); break; case Behs.Slide: v.InitBehaviour(new Vehicle.SlidingCar(speed, minAngle, maxAngle, sminSideSpeed, smaxSideSpeed)); break; case Behs.Military: v.InitBehaviour(new Vehicle.MilitaryCar(speed, 5, 2, 30, 3.5f)); break; default: Debug.LogWarning("something wrong"); break; } v.InitSize(blockType, blockCount); }
private void Start() { gun = GetComponent <ProjectileGun>(); InvokeRepeating("FindPlayerShip", 0, .5f); }
private void Start() { ProjectileGun cannon = GameManager.Instance.dome.gun as ProjectileGun; cannon.shotPrefab = gravitylessCannonBallPrefab; }
public void AddGadget(MonoBehaviour gadget) { if (gadgets.Count < maxGadgets) { switch (gadget.GetType().ToString()) { case "JetpackMovement": JetpackMovement gadgetJM = gadget.GetComponent <JetpackMovement>(); JetpackMovement newGadgetJM = gameObject.AddComponent <JetpackMovement>(); newGadgetJM.upwardMultiplier = gadgetJM.upwardMultiplier; newGadgetJM.gadgetPreviewPrefab = gadgetJM.gadgetPreviewPrefab; gadgets.Add(newGadgetJM); newGadgetJM.enabled = false; break; case "ProjectileGun": ProjectileGun gadgetPG = gadget.GetComponent <ProjectileGun>(); ProjectileGun newGadgetPG = gameObject.AddComponent <ProjectileGun>(); newGadgetPG.cooldown = gadgetPG.cooldown; newGadgetPG.projectilePrefab = gadgetPG.projectilePrefab; newGadgetPG.gadgetPreviewPrefab = gadgetPG.gadgetPreviewPrefab; newGadgetPG.angleMultiplier = gadgetPG.angleMultiplier; newGadgetPG.pointerModel = gadgetPG.pointerModel; gadgets.Add(newGadgetPG); newGadgetPG.enabled = false; break; case "RaycastGun": RaycastGun gadgetRG = gadget.GetComponent <RaycastGun>(); RaycastGun newGadgetRG = gameObject.AddComponent <RaycastGun>(); newGadgetRG.cooldown = gadgetRG.cooldown; newGadgetRG.damage = gadgetRG.damage; newGadgetRG.impactForce = gadgetRG.impactForce; newGadgetRG.range = gadgetRG.range; newGadgetRG.impactParticleSystem = gadgetRG.impactParticleSystem; newGadgetRG.gadgetPreviewPrefab = gadgetRG.gadgetPreviewPrefab; newGadgetRG.angleMultiplier = gadgetRG.angleMultiplier; newGadgetRG.pointerModel = GetComponent <GadgetReferences>().raycastGunPointer; gadgets.Add(newGadgetRG); newGadgetRG.enabled = false; break; case "Shield": Shield gadgetSh = gadget.GetComponent <Shield>(); Shield newGadgetSh = gameObject.AddComponent <Shield>(); newGadgetSh.maxEnergy = gadgetSh.maxEnergy; newGadgetSh.startWithFullEnergy = gadgetSh.startWithFullEnergy; newGadgetSh.loseEnergyOnHit = gadgetSh.loseEnergyOnHit; newGadgetSh.loseEnergyOverTime = gadgetSh.loseEnergyOverTime; newGadgetSh.energyRegeneration = gadgetSh.energyRegeneration; newGadgetSh.shieldObject = GetComponent <GadgetReferences>().shield; newGadgetSh.shieldActiveMaterial = gadgetSh.shieldActiveMaterial; newGadgetSh.shieldDeactivatedMaterial = gadgetSh.shieldDeactivatedMaterial; newGadgetSh.gadgetPreviewPrefab = gadgetSh.gadgetPreviewPrefab; break; default: Debug.LogError("Gadget not listed, unable to add"); break; } Initialize(); } }
// fonction appelée lorsque l'arme de la tour est activée public override void Shoot() { if(Time.time - timeLastShoot > frequency) { isShooting = true; timeLastShoot = Time.time; if(projectilePoolReady.Count > 0) { go = (GameObject) projectilePoolReady[0]; go.SetActive(true); bullet = go.GetComponent(typeof(ProjectileGun)) as ProjectileGun; bullet.isExpired = false; bullet.shooter = shootFromTransform; bullet.target = null; bullet.Shoot(); projectilePoolReady.RemoveAt(0); projectilePoolActive.Add(go); } } else { isShooting = false; } }