コード例 #1
0
    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;
        }
    }
コード例 #2
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();
            }
        }
    }
コード例 #3
0
    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);
    }
コード例 #4
0
    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;
        }
    }