IEnumerator WaitForController() { tankController = target.GetComponent <RTCTankController>(); yield return(new WaitWhile(() => !tankController)); tankGunController = tankController.GetComponentInChildren <RTCTankGunController>(); }
// Update is called once per frame void Update() { if (target) { if (!mapCanvasController) { mapCanvasController = miniMap.GetComponent <MapCanvasController>(); return; } mapCanvasController.playerTransform = target.transform; if (!tankController) { tankController = target.GetComponent <RTCTankController>(); return; } // Player health related lifeRatio = tankController.GetLifeRatio(); healthSlider.value = lifeRatio; HealthSliderText.text = ((int)tankController.CurrentLife).ToString() + " / " + ((int)tankController.MaxLife).ToString(); healthSliderFillBar.color = Color.green; if (lifeRatio < 0.45f) // yellow state for the health bar { healthSliderFillBar.color = Color.yellow; } if (lifeRatio < 0.2f) // red state for the health bar { healthSliderFillBar.color = Color.red; } speedText.text = "" + Mathf.RoundToInt(tankController.speed); // Player tank fuel related fuelSlider.value = tankController.GetFuelRatio(); fuelSliderText.text = ((int)tankController.CurrentFuel).ToString() + " / " + ((int)tankController.maxFuel).ToString(); } // Checking if the player has joined the network and enable the UI elements accordingly if (PhotonNetwork.connectionStateDetailed == ClientState.Joined) { Compass.SetActive(false); ObjPanel.SetActive(false); } else { Compass.SetActive(true); ObjPanel.SetActive(true); } // Check which game mode is active (DM or TDM) and based on that activate the scoreCanvas if (playersListTDM.activeSelf || playersListDM.activeSelf) { scoresCanvas.enabled = true; } else if (!playersListTDM.activeSelf || !playersListDM.activeSelf) { scoresCanvas.enabled = false; } }
public void OnTriggerEnter(Collider other) { if (other.gameObject.tag == "playerTank" || other.gameObject.tag == "Player") // checking if player tank is in the out of bouns collider { timeLeft = 0; outOfBounds = true; player = other.GetComponentInParent <RTCTankController>(); // grabbing the RTCTankController script from the player Tank DEBUG.Log("Player is now out of bounds"); } }
// called by animation through the TankController and also calculates the damage that is being in the line of sight and if any enemies are in it. public void SonicBoomAnimTrigger() { float sonicboomRadiusfloat = sonicBoomRange.GetComponent <SphereCollider>().radius; Collider[] colliders = Physics.OverlapSphere(sonicBoomRange.transform.position, sonicboomRadiusfloat); RaycastHit[] hits = Physics.SphereCastAll(sonicBoomRange.transform.position, 3 * sonicboomRadiusfloat, sonicBoomRange.transform.forward, 100 * sonicboomRadiusfloat); foreach (RaycastHit hit in hits) { if (hit.collider.gameObject.transform.parent && hit.collider.gameObject.transform.parent.gameObject != controller.gameObject && !hitOnce) { // if we have a rigid body if (hit.collider && hit.collider.gameObject.GetComponent <Rigidbody>()) { Rigidbody hitBody = hit.collider.gameObject.GetComponent <Rigidbody>(); hitBody.mass /= 5; hitBody.isKinematic = false; hitBody.AddExplosionForce(explosionForceSonicBoom, hit.collider.gameObject.transform.position, sonicboomRadiusfloat, upwardModifier); Instantiate(sonicBoomDamageEffect, hit.collider.gameObject.transform.position, hit.collider.gameObject.transform.rotation); } // if we hit an enemy tank if (hit.collider && (hit.collider.gameObject.tag == "playerTank" || hit.collider.gameObject.tag == "Player")) { RTCTankController hitTank = hit.collider.gameObject.transform.parent.gameObject.GetComponent <RTCTankController>(); Instantiate(sonicBoomDamageEffect, hit.collider.gameObject.transform.position, hit.collider.gameObject.transform.rotation); if (hitTank) { hitTank.TakeDamage(sonicboomDamage, this.gameObject); hitOnce = true; if (ArcadeController.instance && ArcadeController.instance.hasTankDied) { if (levelManagerRef != null) { levelManagerRef.AddKill(levelManagerRef.xpCollected); } } } } if (hit.collider.gameObject.transform.parent && hit.collider.gameObject.transform.parent.gameObject.GetComponent <TargetToDestroy>()) { hit.collider.gameObject.transform.parent.gameObject.GetComponent <TargetToDestroy>().TakeDamage(sonicboomDamage, this.gameObject); } } } hitOnce = false; if (hit.gameObject.transform.parent && hit.gameObject.transform.parent.gameObject.GetComponent <TargetToDestroy>()) { hit.gameObject.transform.parent.gameObject.GetComponent <TargetToDestroy>().TakeDamage(sonicboomDamage, this.gameObject); } }
void Start() { hitOnce = false; //Setting references levelManagerRef = FindObjectOfType <LevelManager>(); controller = GetComponentInParent <RTCTankController>(); body = controller.gameObject.GetComponent <Rigidbody>(); animator = GetComponentInParent <Animator>(); specialHasFired = false; reloadComplete = false; // Checking if the UI compnents are present if (!loadoutPanel || !reloadImage) // nothing to update { loadoutPanel = FindObjectOfType <Loadoutpanel>(); // Find the loadout panel and if not null, refill image if (loadoutPanel) { reloadImage = loadoutPanel.fillBarImage; } } if (loadoutPanel && !loadoutPanel.specialButton) { loadoutPanel.specialButton = loadoutPanel.transform.parent.Find("SpecialAttackBTN").GetComponent <Button>(); } // Define variables massBackup = body.mass; dragBckup = body.drag; angularDragBackup = body.angularDrag; timerStomp = coolDownStomp; timerLunge = coolDownLunge; timerSwipe = coolDownSwipe; timerBite = coolDownBite; timerSonicBoom = coolDownSonicBoom; // if animator exists, turn it off. Will enable in code when needed. if (animator) { animator.enabled = false; } if (BiteObj) { BiteObj.SetActive(false); BiteAnim.enabled = false; } if (StegoSwipe) { StegoSwipe.SetActive(false); } }
// Settig all the effects that are present in the game public void ApplyEffects(RTCTankController _controller) { _controller.ResetToBackUpValuesForUpgrades(); _controller.GetComponent <Rigidbody>().mass += delataMass; _controller.SetMaxLife(_controller.MaxLife + delataMaxLife); _controller.SetLife(_controller.MaxLife + delataMaxLife); _controller.EngineTorque += delataEngineTorque; _controller.engineRPM += delataMaxRPM; _controller.SetMaxSpeed(_controller.MaxSpeed + (delataMaxSpeed * _controller.MaxSpeed)); _controller.maximumAngularVelocity += delataAngularVelovity; _controller.fireRate += deltaFireRate; _controller.damageMult += deltaDamage; }
// called by animation through the TankController and also calculates the damage being done to the tanks in range of the user. public void SwipeAnimTrigger() { float swipeRadiusfloat = swipeRadiusCollider.GetComponent <SphereCollider>().radius; Collider[] colliders = Physics.OverlapSphere(swipeRadiusCollider.transform.position, swipeRadiusfloat); foreach (Collider hit in colliders) //For every collider that my overlapshere hit, do this.. { // if we are not the player if (hit.gameObject.transform.parent && hit.gameObject.transform.parent.gameObject != controller.gameObject && !hitOnce) { // if we have a rigid body if (hit && hit.GetComponent <Rigidbody>()) { Rigidbody hitBody = hit.GetComponent <Rigidbody>(); hitBody.mass /= 5; hitBody.isKinematic = false; hitBody.AddExplosionForce(explosionForceSwipe, swipeRadiusCollider.transform.position, swipeRadiusfloat, upwardModifier); } // if we hit an enemy tank if (hit && (hit.gameObject.tag == "playerTank" || hit.gameObject.tag == "Player")) { RTCTankController hitTank = hit.gameObject.transform.parent.gameObject.GetComponent <RTCTankController>(); if (hitTank) { hitTank.TakeDamage(swipeDamage, this.gameObject); hitOnce = true; if (ArcadeController.instance && ArcadeController.instance.hasTankDied) { if (levelManagerRef != null) { levelManagerRef.AddKill(levelManagerRef.xpCollected); } } } } if (hit.gameObject.transform.parent && hit.gameObject.transform.parent.gameObject.GetComponent <TargetToDestroy>()) { hit.gameObject.transform.parent.gameObject.GetComponent <TargetToDestroy>().TakeDamage(swipeDamage, this.gameObject); } } } hitOnce = false; }
void Start() { nc = GameObject.FindObjectOfType <NetworkController>(); errorlevel = GetComponent <Text>(); CurrentScene = SceneManager.GetActiveScene(); if (EmptyFuelArrow) { EmptyFuelArrow.SetActive(false); } if (APP.PlayerTankManager == null || APP.PlayerTankManager.player == null) // if the player doesn't have a player tank manager, then wait and spawn one { StartCoroutine(WaitForPTMToSpawn()); return; } // Setting UI elements inactive or active HideScopeFade(); win.GetComponent <Canvas>().enabled = false; lose.GetComponent <Canvas>().enabled = false; scoresCanvas.enabled = false; skipButton.SetActive(false); edgeFade.SetActive(false); damageFade.SetActive(true); blackFade.SetActive(false); viewSlit.SetActive(false); // Assigning/Finding data from objects present in the scene levelManagerRef = FindObjectOfType <LevelManager>(); mapCanvasController = miniMap.GetComponent <MapCanvasController>(); tankController = APP.PlayerTankManager.player.GetComponent <RTCTankController>(); tankGunController = tankController.GetComponentInChildren <RTCTankGunController>(); if (!tankController) { StartCoroutine("WaitForController"); } // Cursor Related Cursor.visible = false; Cursor.lockState = CursorLockMode.Locked; if (levelManagerRef.errorInStack) { errors.SetActive(true); errorlevel.text = levelManagerRef.checkpointsCount + levelManagerRef.destroyTargetCount + levelManagerRef.collectCount + levelManagerRef.waveCount + levelManagerRef.destinationsCount + levelManagerRef.deliverCount + levelManagerRef.captureCount + levelManagerRef.cutSceneCount + "Error in Level Manager"; DEBUG.Log("Errors in LevelManager detected, behaviour may be broken", Warning_Types.Error); } else { errors.SetActive(false); } LoadoutPanel.Initialize(); // Fuel Arrow only for the grasslands level if (CurrentScene.name.Contains("Campaign_Grasslands")) { EmptyFuelArrow.SetActive(tankController.CurrentFuel <= 0 ? true : false); } else { EmptyFuelArrow.SetActive(false); } }
// Adding a new _target GameObject public void SetTarget(GameObject _target) { target = _target; // Giving the same information as the target GameObject tankController = _target.GetComponent <RTCTankController>(); tankGunController = _target.GetComponentInChildren <RTCTankGunController>(); }
void Awake() { tankScript = (RTCTankController)target; }