private void OnTriggerExit2D(Collider2D collision) { if (collision.CompareTag(Tags.player) && collision.gameObject.GetComponentInChildren <GunController>().currentCharge > 0) { lightning.EndObject = collision.gameObject; lightning.Trigger(); GetComponent <AudioSource>().Play(); collision.gameObject.GetComponentInChildren <GunController>().currentCharge = 0; } if (collision.CompareTag(Tags.enemy) && collision.gameObject.GetComponentInChildren <EnemyWeapon>().currentCharge > 0) { lightning.EndObject = collision.gameObject; lightning.Trigger(); GetComponent <AudioSource>().Play(); collision.gameObject.GetComponentInChildren <EnemyWeapon>().currentCharge = 0; } }
public void OnTriggerStay2D(Collider2D collision) { int otherDoorChildIndex = 1 - gameObject.transform.GetSiblingIndex(); string otherName = otherDoorChildIndex.ToString(); if (isOpen) { if (collision.gameObject.tag.Equals("Player") && Input.GetButtonDown("Fire2")) { collision.gameObject.transform.position = gameObject.transform.parent.Find(string.Concat("Door", otherName)).position; //StartCoroutine(MoveCamera(collision.gameObject.transform.position.x, collision.gameObject.transform.position.y)); lightning.Trigger(); SoundManager.Instance.EmptyGunshot(); } } }
public override void PointerLocationAbility(Vector3 location) { // Calculate the lightning's start and end points. Vector3 start, end; Vector3 additionalY = new Vector3(0f, lightningHeight, 0f); start = location + additionalY; end = location; //Debug.Log("Lightning StartObject/EndObject: " + compLightning.StartObject + ", " + compLightning.EndObject); // Interface with the third-party lightning script to create the lightning itself. compLightning.StartPosition = start; compLightning.EndPosition = end; compLightning.Trigger(); // Play a lightning sound. compSoundArray.PlayRandomSound(); // Instantiate the particles and area of effect object. Instantiate(lightningBlast, end, Quaternion.identity); Instantiate(areaOfEffect, end, Quaternion.identity); }
void Update() { mLineRenderer.SetPosition(0, barrel.position); RaycastHit2D hit = Physics2D.Linecast(barrel.position, laserDirection.position, untraversableLayers); if (hit.collider != null && !hit.collider.gameObject.layer.Equals(9)) { dotsight.transform.position = hit.point; mLineRenderer.SetPosition(1, hit.point); lightning.EndPosition = hit.point; mTarget = hit.transform; } else { mLineRenderer.SetPosition(1, laserDirection.position); dotsight.transform.position = laserDirection.position; lightning.EndPosition = laserDirection.position; mTarget = null; } if (!player.controlling) { float a = Input.GetAxis("HorizontalGun"); float b = Input.GetAxis("VerticalGun"); float c = Mathf.Sqrt(Mathf.Pow(a, 2) + Mathf.Pow(b, 2)); //rotazione della pistola if (Mathf.Abs(c) < 0.5f) { mLineRenderer.material = idleMaterial; dotsight.GetComponent <SpriteRenderer>().enabled = false; isAiming = false; } else { mLineRenderer.material = aimMaterial; if (hasGun) { dotsight.GetComponent <SpriteRenderer>().enabled = true; } isAiming = true; } if (Mathf.Abs(c) > 0.9 && !isLocked) { float angleRot = -Mathf.Sign(b) * Mathf.Rad2Deg * Mathf.Acos(a / c); mTransform.rotation = Quaternion.Euler(0f, 0f, angleRot); //mantiene la sprite dell'arma nel verso giusto if (mTransform.rotation.eulerAngles.z % 270 < 90 && mTransform.rotation.eulerAngles.z % 270 >= 0) { GetComponent <SpriteRenderer>().flipY = false; arm.flipX = false; armShadow.flipX = false; transform.GetChild(0).gameObject.GetComponent <SpriteRenderer>().flipY = false; } else { GetComponent <SpriteRenderer>().flipY = true; arm.flipX = true; armShadow.flipX = true; transform.GetChild(0).gameObject.GetComponent <SpriteRenderer>().flipY = true; } } if (hasGun && canFire && Input.GetButtonDown("Fire1")) { isLocked = true; SoundManager.Instance.EmptyGunshot(); lightning.Trigger(); mLineRenderer.enabled = false; if (mTarget != null) { if (mTarget.CompareTag(Tags.light)) { LightController currentLight = mTarget.GetComponent <LightController>(); if (InLineOfSight(mTarget.GetComponent <Collider2D>()) && !currentLight.changingStatus) { if ((currentLight.lightStatus && (maxCharge - currentCharge) >= currentLight.lightCharge) || (!currentLight.lightStatus && currentCharge >= currentLight.lightCharge)) { mTarget.GetComponent <LightController>().SwitchOnOff(transform); if (currentLight.lightStatus) { lightningCoroutine = StartCoroutine(LightningEffectOn(mTarget.GetComponent <LightController>().switchTime, true)); StartCoroutine("TrailingEffectOff", mTarget.GetComponent <LightController>().switchTime); } else { lightningCoroutine = StartCoroutine(LightningEffectOn(mTarget.GetComponent <LightController>().switchTime, false)); StartCoroutine("TrailingEffectOn", mTarget.GetComponent <LightController>().switchTime); } //isLocked = true; } } } else if (mTarget.CompareTag(Tags.machinery)) { MachineryController currentMachinery = mTarget.GetComponent <MachineryController>(); if (InLineOfSight(mTarget.GetComponent <Collider2D>()) && !currentMachinery.changingStatus) { if ((currentMachinery.powered && (maxCharge - currentCharge) >= currentMachinery.powerCharge) || (!currentMachinery.powered && currentCharge >= currentMachinery.powerCharge)) { currentMachinery.SwitchOnOff(transform); if (currentMachinery.powered) { lightningCoroutine = StartCoroutine(LightningEffectOn(mTarget.GetComponent <MachineryController>().switchTime, true)); StartCoroutine("TrailingEffectOff", mTarget.GetComponent <MachineryController>().switchTime); } else { lightningCoroutine = StartCoroutine(LightningEffectOn(mTarget.GetComponent <MachineryController>().switchTime, false)); StartCoroutine("TrailingEffectOn", mTarget.GetComponent <MachineryController>().switchTime); } //isLocked = true; } } } else if (mTarget.CompareTag(Tags.enemy)) { enemyControlled = mTarget.GetComponent <EnemyController>(); if (InLineOfSight(mTarget.GetComponent <Collider2D>()) && currentCharge >= enemyControlled.controlCost) { enemyControlled.ControlledOn(transform); lightningCoroutine = StartCoroutine(LightningEffectOn(mTarget.GetComponent <EnemyController>().switchTime, false)); StartCoroutine("TrailingEffectOn", mTarget.GetComponent <EnemyController>().switchTime); //isLocked = true; } } } } if (hasGun && Input.GetButtonUp("Fire1")) { isLocked = false; mLineRenderer.enabled = true; if (lightningCoroutine != null) { StopCoroutine(lightningCoroutine); } StopCoroutine("TrailingEffectOn"); StopCoroutine("TrailingEffectOff"); SoundManager.Instance.GunshotStop(); Destroy(particleEffect); } } else if (mLineRenderer.material != idleMaterial) { mLineRenderer.material = idleMaterial; } if (hasGun && Input.GetButtonUp("Fire1")) { mLineRenderer.enabled = true; } }