// Update is called once per frame void Update() { MyHoverText.text = TankName + "\nHealth: " + Health.ToString("0.00"); if (MyTurn) { if (MyControlType == ControlType.LocalPlayer && !WaitingToFire) { HorizontalInput(); TurretInput(); MyHoverText.text += "\nFuel: " + Fuel.ToString("0.00"); } else if (MyControlType == ControlType.NetworkPlayer) { } else { ComputerInput(); } WrapWorld(); AdjustAngle(); } if (Health <= 0f) { SpawnDeadTank(); MyHoverText.text = TankName + " RIP"; } if (WaitingToFire) { FireDelayTimer -= Time.deltaTime; if (FireDelayTimer <= 0f) { WaitingToFire = false; // Fire Gun cameraEffects.Shake(0.25f); FireGunAudio.Play(); GunSprite.FireGun(); GunBlast.Play(); GunSmoke.Play(); // Setup the bullet GameObject bullet = Instantiate(manager.BulletPrefabs[BulletType]); Vector3 bulletVector = Lump.position - TurretPivot.position; bulletVector.Normalize(); bulletVector *= BulletPower; bullet.GetComponent <Bullet>().velocity = bulletVector; bullet.transform.position = Lump.position; BulletType = 0; // End turn manager.NextPlayer(); } } MyHoverText.gameObject.SetActive(!manager.Paused); MovementEffects(); }
private void Explode() { cameraEffects.Shake(0.25f); MyParticles.Stop(); MyParticles.gameObject.AddComponent <ParticleKiller>(); MyParticles.transform.parent = null; if (SpawnExplosion) { BulletExplosion explosion = Instantiate(ExplosionPrefab).GetComponent <BulletExplosion>(); explosion.transform.position = transform.position; explosion.transform.localScale = new Vector3(ExplosionRadius, ExplosionRadius, ExplosionRadius); explosion.Damage = Damage; AudioSource audio = explosion.GetComponent <AudioSource>(); audio.clip = ExplosionSound; audio.Play(); } Destroy(gameObject); if (!IgnoreLanding) { manager.BulletLanded(); } // todo - cause different effects here depending on the bullet }
public IEnumerator Die() { inputDelegate = Empty; rotationDelegate = Empty; ledsIn.color = ledsOut.color = Color.black; GetComponent <Breakable>().Break(true); movementUpgradeObject.GetComponent <Breakable>().Break(); attackUpgradeObject.GetComponent <Breakable>().Break(); aim.gameObject.SetActive(false); CameraEffects cam = Camera.main.GetComponent <CameraEffects>(); if (cam) { cam.StopAllCoroutines(); cam.StartCoroutine(cam.Shake()); } Time.timeScale = .01f; yield return(new WaitForSecondsRealtime(.3f)); Time.timeScale = 1f; }
public void Hit(int launchDirection) { if (!recovering) { cameraEffect.Shake(100, 1); animator.SetTrigger("hurt"); velocity.y = launchPower.y; launch = launchDirection * (launchPower.x); recoveryCounter = 0; recovering = true; GamePad.SetVibration(0, 1f, 1f); StartCoroutine(timer()); if (health <= 0) { GamePad.SetVibration(0, 2f, 2f); StartCoroutine(timer()); Die(); } else { health -= 1; } GameManager.Instance.playerUI.HealthBarHurt(); } }
public void OnNextPressed() { cameraEffects.Shake(0.1f, 0.1f); source.PlayOneShot(menuButtonPress); if (currentScreen == MenuScreen.Guide1) { EnableScreen(MenuScreen.Guide2); } else if (currentScreen == MenuScreen.Guide2) { EnableScreen(MenuScreen.Guide3); } else if (currentScreen == MenuScreen.Guide3) { gameObject.SetActive(false); } }
public void Eject(Vector3 position, Vector3 direction, Quaternion rotation) { if (canEject_) { StartCoroutine(EjectCO(position, direction, rotation)); cameraEffects_.Shake(0.3f, 0.15f, direction); } }
private void Shoot() { if (Input.GetButtonDown("Fire1") && ammo_.TryToUseAmmo(1)) { cannonAnim_.SetTrigger("recoil"); Vector3 dir = (Input.mousePosition - Camera.main.WorldToScreenPoint(transform.position)).normalized; cameraEffects_.Shake(0.3f, 0.1f, dir); Instantiate(bulletPrefab_, firingPoint_.position, cannonTransform_.rotation); } }
public void Hurt(int attackPower, int targetSide) { StartCoroutine(FreezeEffect(.5f, .6f)); animator.SetTrigger("hurt"); Debug.Log("I'm getting hurt on my side:" + targetSide); launch = -targetSide * launchPower.x; velocity.y = launchPower.y; cameraEffects.Shake(5, .5f); NewPlayer.Instance.health -= attackPower; NewPlayer.Instance.UpdateUI(); }
//This is for testing private void SendDamage(Object data) { DamageData damageData = data as DamageData; Stat sendingStat = stats.FirstOrDefault(x => x.Name == damageData.sendingStat); if (sendingStat == null) { return; } Collider[] colliders = Physics.OverlapSphere(transform.position, damageData.maxDistance); for (int i = 0; i < colliders.Length; i++) { if (colliders[i].transform != transform) { Vector3 direction = colliders[i].transform.position - transform.position; float angle = Vector3.Angle(direction, transform.forward); if (Mathf.Abs(angle) < damageData.maxAngle) { StatsHandler receiver = colliders[i].GetComponent <StatsHandler>(); if (receiver != null) { Stat criticalStrikeStat = stats.FirstOrDefault(x => x.Name == damageData.criticalStrikeStat); bool criticaleStrike = criticalStrikeStat != null && criticalStrikeStat.Value > UnityEngine.Random.Range(0f, 100f); float damage = sendingStat.Value; if (criticaleStrike) { damage *= 2f; } receiver.ApplyDamageInternal(damageData.receivingStat, damage, 0, criticaleStrike); if (damageData.particleEffect != null) { Vector3 pos = colliders[i].ClosestPoint(transform.position + damageData.offset); Vector3 right = UnityEngine.Random.Range(-damageData.randomize.x, damageData.randomize.x) * transform.right; Vector3 up = UnityEngine.Random.Range(-damageData.randomize.y, damageData.randomize.y) * transform.up; Vector3 forward = UnityEngine.Random.Range(-damageData.randomize.z, damageData.randomize.z) * transform.forward; Vector3 relativePos = (transform.position + damageData.offset + right + up + forward) - pos; GameObject effect = Instantiate(damageData.particleEffect, pos, Quaternion.LookRotation(relativePos, Vector3.up)); Destroy(effect, damageData.lifeTime); } CameraEffects.Shake(damageData.duration, damageData.speed, damageData.amount); if (damageData.hitSounds.Length > 0) { UnityTools.PlaySound(damageData.hitSounds[UnityEngine.Random.Range(0, damageData.hitSounds.Length)], damageData.volume); } } } } } }
public void KillPlayer(GameObject player) { if (cameraEffects != null) { cameraEffects.Shake(camShakeIntensity, camShakes); } Movement playerMovement = player.GetComponent <Movement>(); playerMovement.CanJump = false; // now the player doesn't jump on respawn StartCoroutine(PlayerKillEffect(player)); }
IEnumerator Attack() { state = ActionState.Attacking; Vector2 startPos = transform.position; Vector2 endPos; RaycastHit2D hit = Physics2D.Raycast(transform.position, Vector2.down, detectionHeight, groundMask); if (hit) { endPos = hit.point + Vector2.up * mainCollider.bounds.size.y / 2f; } else { endPos = -transform.up * detectionHeight; } bool destinationReached = false; while (!destinationReached) { destinationReached = Move(endPos, fallSpeed); if (!hit && destinationReached) { Destroy(gameObject); // it fell of into the void lmao yield break; // safety } yield return(null); } state = ActionState.Recovering; if (cameraEffects != null) { cameraEffects.Shake(camShakeIntensity, camShakes); } yield return(new WaitForSeconds(stopTime)); destinationReached = false; while (!destinationReached) { destinationReached = Move(startPos, ascendSpeed); yield return(null); } yield return(new WaitForSeconds(cooldownTime)); state = ActionState.Standby; }
public void GetHurt(int hurtDirection, int hitPower) { //If the player is not frozen (ie talking, spawning, etc), recovering, and pounding, get hurt! if (!frozen && !recoveryCounter.recovering && !pounding) { HurtEffect(); cameraEffects.Shake(100, 1); animator.SetTrigger("hurt"); velocity.y = hurtLaunchPower.y; launch = hurtDirection * (hurtLaunchPower.x); recoveryCounter.counter = 0; if (health <= 0) { StartCoroutine(Die()); } else { health -= hitPower; } GameManager.Instance.hud.HealthBarHurt(); } }
void HammerDown() { movement.MoveDown(); if (hammerUpCoroutine != null) { StopCoroutine(MoveHammerUp()); } hammerUpCoroutine = StartCoroutine(MoveHammerUp()); animator.Play("Down"); trigger.SetActive(true); SoundManager.PlaySound(SoundEffects.HAMMER); if (cameraEffects != null) { cameraEffects.Shake(); } }
public void Hit(int launchDirection) { if (!recovering) { cameraEffect.Shake(100, 1); animator.SetTrigger("hurt"); velocity.y = launchPower.y; launch = launchDirection * (launchPower.x); recoveryCounter = 0; recovering = true; if (health <= 0) { Die(); } else { health -= 1; } GameManager.Instance.playerUI.HealthBarHurt(); } }
// Start is called before the first frame update void Start() { roddentPopularityBar.SetValue(roddentPopularity / maxPopularity, false); roddentTrustBar.SetValue(roddentTrust / maxPopularity, false); fancybookPopularityBar.SetValue(fancybookPopularity / maxPopularity, false); fancybookTrustBar.SetValue(fancybookTrust / maxPopularity, false); // randomise incoming articles incomingTitles = AllTitles.Titles.ToList().OrderBy(x => UnityEngine.Random.value).ToList(); shownTitle.SetTitle(incomingTitles[currentTitleIndex]); postButton.onClick.AddListener(() => { // Confirm new values var(rpop, rsus, fpop, fsus) = confirmModifiers(); infoPanel.text = ""; cameraEffects.Shake(0.1f, 0.1f); sendSource.PlayOneShot(sendClip); // If the edited article doesnt affect fancybook, add some randomness to it anyway fpop = fpop == 0.0f ? UnityEngine.Random.Range(-1.0f, 1.0f) : fpop; fsus = fsus == 0.0f ? UnityEngine.Random.Range(-1.0f, 1.0f) : fsus; roddentPopularity = Math.Min(maxPopularity, Math.Max(0, roddentPopularity + rpop)); roddentTrust = Math.Min(maxPopularity, Math.Max(0, roddentTrust - rsus)); fancybookPopularity = Math.Min(maxPopularity, Math.Max(0, fancybookPopularity + fpop)); fancybookTrust = Math.Min(maxPopularity, Math.Max(0, fancybookTrust - fsus)); Debug.Log(String.Format("RP {0} RT {1} FP {2} FT {3}", roddentPopularity, roddentTrust, fancybookPopularity, fancybookTrust)); if (roddentPopularity <= 1) { TriggerEnding(EndingType.RoddentLowPopularity); } else if (fancybookPopularity <= 1) { TriggerEnding(EndingType.FancybookLowPopularity); } else if (fancybookPopularity >= 0.9 * maxPopularity) { TriggerEnding(EndingType.FancybookHighPopularity); } else if (roddentPopularity >= 0.9 * maxPopularity) { TriggerEnding(EndingType.RoddentHighPopularity); } if (roddentTrust <= 0.1 * maxPopularity) { infoPanel.text = "Roddent's trust is too low, many people are leaving the platform."; roddentPopularity /= 1.5f; } else if (fancybookPopularity >= maxPopularity * 0.8f) { infoPanel.text = "People love Fancybook! Many people are leaving Roddent to go to Fancybook!"; roddentPopularity /= 1.5f; } else if (roddentPopularity >= maxPopularity * 0.8f) { infoPanel.text = "People love your platform, many are leaving Fancybook!"; fancybookPopularity /= 1.5f; } else if (fancybookTrust <= maxPopularity * 0.1f) { infoPanel.text = "People don't trust Fancybook, many are leaving."; fancybookPopularity /= 1.5f; } // Update sliders roddentPopularityBar.SetValue(roddentPopularity / maxPopularity, false); roddentTrustBar.SetValue(roddentTrust / maxPopularity, false); fancybookPopularityBar.SetValue(fancybookPopularity / maxPopularity, false); fancybookTrustBar.SetValue(fancybookTrust / maxPopularity, false); // Get new title currentTitleIndex++; currentTitleIndex %= incomingTitles.Count; shownTitle.SetTitle(incomingTitles[currentTitleIndex]); }); }
public override void Update() { base.Update(); if (teleportBarTime != teleportCooldown) { teleportBarTime += Time.deltaTime; } // Debug.Log(TeleportBar[3].fillAmount); TeleportBar[3].fillAmount = teleportBarTime / teleportCooldown; if (animator.GetBool("Hurt")) { cameraEffect.Shake(100, 1); GamePad.SetVibration(0, 2f, 2f); StartCoroutine(timerVibrate()); } Die(); if (Input.GetButtonDown("Space")) { if (Input.GetButtonDown("Space") && (CheckRaycast(1f, Vector2.down, groundLayer).collider == null) && cnt == 0) { if (canDoubleJump == true) { cnt++; rb.velocity = new Vector2(0, 0); rb.AddForce(new Vector2(0, jumpheight - 3), ForceMode2D.Impulse); canDoubleJump = false; soundManager.clip = jump; soundManager.Play(); } //Jump(); } // Jump(); } if (Input.GetButtonDown("Teleport") && Time.time > teleportTime) { gameObject.GetComponentInChildren <TrailRenderer>().emitting = true; Teleport(); teleportTime = Time.time + teleportCooldown; teleportBarTime = 0; StartCoroutine(timer()); } if (CheckRaycast(1f, Vector2.down, groundLayer).collider != null) { canDoubleJump = true; cnt = 0; } if (Input.GetAxis("Horizontal") > 0.2f || Input.GetAxis("Horizontal") < -0.2f) { Move(Input.GetAxis("Horizontal")); //animator.SetBool("Run", true); } else { animator.SetBool("Run", false); } if (Input.GetButtonDown("Fire1") && Time.time > nextFire) { nextFire = Time.time + timeBetweenAttack; Attack(); } /* if (Input.GetMouseButtonDown(1)) * { * //Rigidbody2D rangedBullet; * * //rangedBullet = Instantiate(Enemy); * GameObject instantiere = Instantiate(rangedBullet, new Vector3(tr.position.x + 1, tr.position.y,tr.position.z) , tr.rotation) as GameObject; * //instantiere.AddComponent<Rigidbody2D>(); * instantiere.GetComponent<Rigidbody2D>().AddForce(new Vector2(100f, 0f),ForceMode2D.Impulse); * * * * * } To do ranged attack*/ /* if (Input.GetButtonDown("Special Attack")) * { * if (Input.GetButtonUp("Special Attack") ) * { * specialStart = Time.time + specialCooldown; * AttackDetectHit(); * } * } to do special attack */ }
private void SendDamage(GameObject receiver, Object data) { StatsHandler receiverHandler = receiver.GetComponent <StatsHandler>(); DamageData damageData = data as DamageData; //Exclude self tag, needs some kind of frieds tag system if (gameObject.tag == receiver.tag) { return; } if (receiverHandler != null && receiverHandler.enabled && damageData != null) { Stat sendingStat = this.m_Stats.FirstOrDefault(x => x.Name == damageData.sendingStat); if (sendingStat == null) { return; } Stat criticalStrikeStat = this.m_Stats.FirstOrDefault(x => x.Name == damageData.criticalStrikeStat); bool criticaleStrike = criticalStrikeStat != null && criticalStrikeStat.Value > UnityEngine.Random.Range(0f, 100f); sendingStat.CalculateValue(); float damage = sendingStat.Value; if (criticaleStrike) { damage *= 2f; } receiverHandler.ApplyDamage(damageData.receivingStat, damage); EventHandler.Execute(receiver, "OnGetHit", gameObject, damageData.receivingStat, damage); SendMessage("UseItem", SendMessageOptions.DontRequireReceiver); if (damageData.particleEffect != null) { Vector3 pos = receiver.GetComponent <Collider>().ClosestPoint(transform.position + damageData.offset); Vector3 right = UnityEngine.Random.Range(-damageData.randomize.x, damageData.randomize.x) * transform.right; Vector3 up = UnityEngine.Random.Range(-damageData.randomize.y, damageData.randomize.y) * transform.up; Vector3 forward = UnityEngine.Random.Range(-damageData.randomize.z, damageData.randomize.z) * transform.forward; Vector3 relativePos = (transform.position + damageData.offset + right + up + forward) - pos; GameObject effect = Instantiate(damageData.particleEffect, pos, Quaternion.LookRotation(relativePos, Vector3.up)); Destroy(effect, damageData.lifeTime); } if (damageData.enableShake) { CameraEffects.Shake(damageData.duration, damageData.speed, damageData.amount); } if (damageData.hitSounds.Length > 0) { receiverHandler.PlaySound(damageData.hitSounds[UnityEngine.Random.Range(0, damageData.hitSounds.Length)], damageData.audioMixerGroup, damageData.volumeScale); } if (damageData.displayDamage) { receiverHandler.DisplayDamage(damageData.damagePrefab, damage, criticaleStrike?damageData.criticalDamageColor:damageData.damageColor, damageData.intensity); } if (damageData.enableKnockback && damageData.knockbackChance > Random.Range(0f, 1f)) { StartCoroutine(Knockback(receiver, damageData)); } Animator animator = receiver.GetComponent <Animator>(); if (animator != null && animator.GetCurrentAnimatorStateInfo(0).IsName("Locomotion") && !animator.IsInTransition(0)) { animator.SetTrigger("Hit"); } } }
protected override void ComputeVelocity() { Vector2 move = Vector2.zero; playerDifference = NewPlayer.Instance.gameObject.transform.position.x - transform.position.x; directionSmooth += (direction - directionSmooth) * Time.deltaTime * changeDirectionEase; if (!NewPlayer.Instance.frozen && !recovering) { move.x = 1 * directionSmooth; //Flip the graphic depending on the speed if (move.x < 0.01f) { if (graphic.transform.localScale.x < 0) { graphic.transform.localScale = new Vector3(origLocalScale.x, transform.localScale.y, transform.localScale.z); } } else if (move.x > -0.01f) { if (graphic.transform.localScale.x > 0) { graphic.transform.localScale = new Vector3(-origLocalScale.x, transform.localScale.y, transform.localScale.z); } } //Check floor type ground = Physics2D.Raycast(transform.position, -Vector2.up); Debug.DrawRay(transform.position, -Vector2.up, Color.green); //Check if player is within range to follow if (enemyType == EnemyType.Zombie) { if ((Mathf.Abs(playerDifference) < followRange)) { followPlayer = true; } else { followPlayer = false; } } if (followPlayer) { if (BossShake) { cameraEffect.Shake(7, 1); GamePad.SetVibration(0, 0.25f, 0.25f); StartCoroutine(timer()); } if (playerDifference < 0) { direction = -1; } else { direction = 1; } } else { //Allow enemy to instantly change direction when not following player directionSmooth = direction; } //Check for walls rightWall = Physics2D.Raycast(new Vector2(transform.position.x + rayCastOffset.x, transform.position.y + rayCastOffset.y), Vector2.right, 1f, layerMask); Debug.DrawRay(new Vector2(transform.position.x, transform.position.y + rayCastOffset.y), Vector2.right, Color.yellow); if (rightWall.collider != null) { if (!followPlayer) { direction = -1; } else { Jump(); } } leftWall = Physics2D.Raycast(new Vector2(transform.position.x - rayCastOffset.x, transform.position.y + rayCastOffset.y), Vector2.left, 1f, layerMask); Debug.DrawRay(new Vector2(transform.position.x, transform.position.y + rayCastOffset.y), Vector2.left, Color.blue); if (leftWall.collider != null) { if (!followPlayer) { direction = 1; } else { Jump(); } } //Check for ledges if (!followPlayer) { rightLedge = Physics2D.Raycast(new Vector2(transform.position.x + rayCastOffset.x, transform.position.y), Vector2.down, .5f); Debug.DrawRay(new Vector2(transform.position.x + rayCastOffset.x, transform.position.y), Vector2.down, Color.blue); if (rightLedge.collider == null) { direction = -1; } leftLedge = Physics2D.Raycast(new Vector2(transform.position.x - rayCastOffset.x, transform.position.y), Vector2.down, .5f); Debug.DrawRay(new Vector2(transform.position.x - rayCastOffset.x, transform.position.y), Vector2.down, Color.blue); if (leftLedge.collider == null) { direction = 1; } } //Recovery after being hit } else if (recovering) { recoveryCounter += Time.deltaTime; move.x = launch; launch += (0 - launch) * Time.deltaTime; if (recoveryCounter >= recoveryTime) { recoveryCounter = 0; recovering = false; } } animator.SetBool("grounded", grounded); animator.SetFloat("velocityX", Mathf.Abs(velocity.x) / maxSpeed); targetVelocity = move * maxSpeed; }