예제 #1
0
        //=================================================================================
        //更新
        //=================================================================================

        //状態を更新
        protected override void UpdateState()
        {
            //経過時間加算、残像を生成するか判定
            _elapsedTime += _ignoreTimeScale ? Time.unscaledDeltaTime : Time.deltaTime;
            if (_elapsedTime < _span)
            {
                return;
            }
            _elapsedTime = 0;

            //現在レンダラーの状態から残像の情報を作成
            AfterImageEffect2DInfo info = new AfterImageEffect2DInfo(_targetSpriteRenderer);

            //残像生成、初期化
            StaticAfterImageEffect2D afterImage = _afterImagePool.Get <StaticAfterImageEffect2D>();

            afterImage.Init(info, GetColor(_nextColorNo), GetMaterial(_nextMaterialNo), _duraction, _fadeTime, _ignoreTimeScale, ReleaseAfterImage);
            afterImage.transform.position = _targetSpriteRenderer.transform.position;

            _afterImageList.Add(afterImage);

            //次の色とマテリアルの番号を変更
            _nextColorNo++;
            _nextMaterialNo++;

            if (_nextColorNo >= _colorNum)
            {
                _nextColorNo = 0;
            }
            if (_nextMaterialNo >= _materialNum)
            {
                _nextMaterialNo = 0;
            }
        }
예제 #2
0
        //=================================================================================
        //破棄
        //=================================================================================

        //影を破棄する
        private void ReleaseAfterImage(StaticAfterImageEffect2D target)
        {
            _afterImagePool.Release(target.gameObject);
            _afterImageList.Remove(target);
        }