Example #1
0
    public void InstantiateParticle(Emitter e, GameObject original, ObjectInitiator initiator)
    {
        Randomizer rand = Randomizer.Instance;
        GameObject p    = (GameObject)GameObject.Instantiate(original);

        // イニシエータの実行
        if (initiator != null)
        {
            p = initiator(p);
        }
        Vector3 pos = p.transform.position;

        pos.x = e.transform.position.x + e.PositionOffset.x;
        pos.y = e.transform.position.y + e.PositionOffset.y;
        pos.z = e.transform.position.z + e.PositionOffset.z;
        p.transform.position = pos;

        Force f = p.GetComponent <Force>();
        float d = (e.Direction + 360) * e.DirectionDiffusion;

        f.Direction = (e.Direction - d / 2) + d * rand.NextFloat();
        float s = e.InitialSpeed * e.InitialSpeedDiffusion;

        f.Value = (e.InitialSpeed - s) + s * rand.NextFloat();
        f.Activate();
    }
Example #2
0
    private IEnumerator performForce()
    {
        _chargingForce = true;

        float duration   = 0f;
        int   forceLevel = 1;

        _spriteRenderer.color = _force1.SpriteRenderer.color;

        ParticleSystem.MainModule particles = _chargeForceParts.main;

        particles.startColor    = _force1.SpriteRenderer.color;
        particles.startLifetime = new ParticleSystem.MinMaxCurve(0.25f);
        particles.startSpeed    = new ParticleSystem.MinMaxCurve(1f);

        _chargeForceParts.Play();
        playSound(0);

        while (Input.GetButton("Fire1"))
        {
            if (_waitingForSphere)
            {
                break;
            }

            duration += Time.deltaTime;

            if (forceLevel == 1 && duration > 0.5f)
            {
                forceLevel            = 2;
                _spriteRenderer.color = _force2.SpriteRenderer.color;

                particles.startColor    = _force2.SpriteRenderer.color;
                particles.startLifetime = new ParticleSystem.MinMaxCurve(0.35f);
                particles.startSpeed    = new ParticleSystem.MinMaxCurve(1.5f);

                playSound(1);
            }

            if (forceLevel == 2 && duration > 1f)
            {
                forceLevel            = 3;
                _spriteRenderer.color = _force3.SpriteRenderer.color;

                particles.startColor    = _force3.SpriteRenderer.color;
                particles.startLifetime = new ParticleSystem.MinMaxCurve(0.45f);
                particles.startSpeed    = new ParticleSystem.MinMaxCurve(2f);

                playSound(2);
            }

            yield return(null);
        }

        _chargeForceParts.Stop();
        _chargingForce = false;

        if (_waitingForSphere)
        {
            _spriteRenderer.color = Color.white;
            yield break;
        }

        _performingForce = true;

        switch (forceLevel)
        {
        case 1:
            _currentForce = _force1;
            break;

        case 2:
            _currentForce = _force2;
            break;

        case 3:
            _currentForce = _force3;
            break;
        }

        playSound(3);
        _hands.gameObject.SetActive(true);
        yield return(_currentForce.Activate(0.2f));

        _hands.gameObject.SetActive(false);

        _spriteRenderer.color = Color.white;

        _currentForce    = null;
        _performingForce = false;
    }