/// <summary>
 /// LoadContent will be called once per game and is the place to load
 /// all of your content.
 /// </summary>
 protected override void LoadContent()
 {
     // Create a new SpriteBatch, which can be used to draw textures.
     spriteBatch = new SpriteBatch(GraphicsDevice);
     SpriteBatchHelpers.Initialize(this.GraphicsDevice);
     Billboard.Initialize(this.GraphicsDevice, Content.Load <Effect>("Shaders/Billboarding"));
 }
示例#2
0
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);
            this.Services.AddService(typeof(SpriteBatch), spriteBatch);
            DiagnosticsManager.Initialize(this);
            SpriteBatchHelpers.Initialize(GraphicsDevice);
            Primitives.Initialize(GraphicsDevice);
            Billboard.Initialize(GraphicsDevice, Content.Load <Effect>("Shaders/Billboarding"));

            // TODO: use this.Content to load your game content here
            CreateSpheres();

            ship      = new Ship(this);
            followCam = new FollowCamera(camera, ship);

            lightningTexture = new LightningTexture(GraphicsDevice, 50, 100);

            #region Particles
            pSet = new ParticleSettings()
            {
                BlendState                 = BlendState.Additive,
                MaxParticles               = 10,
                Duration                   = TimeSpan.FromSeconds(0.5),
                DurationRandomness         = 0.1f,
                EmitterVelocitySensitivity = 0,
                MinVelocity                = 1f,
                MaxVelocity                = 2f,
                Gravity        = Vector3.Zero,
                EndVelocity    = 0,
                MinColor       = Color.White,
                MaxColor       = Color.White,
                MinRotateSpeed = -0.1f,
                MaxRotateSpeed = 0.1f,
                MinStartSize   = 0.25f,
                MaxStartSize   = 0.35f,
                MinEndSize     = 0.5f,
                MaxEndSize     = 0.6f
            };

            var pTex = new Texture2D(GraphicsDevice, 5, 5);
            pTex.SetData(Enumerable.Repeat(Color.FromNonPremultiplied(0, 0, 255, 125), 25).ToArray());

            var pEff = Content.Load <Effect>("Shaders/Particles");

            pSys = new ParticleSystem(this, pSet, pTex, pEff, camera);
            pEmi = new ParticleEmitter(pSys)
            {
                Position = Vector3.UnitX, ParticlesPerSecond = 10
            };
            pEmi2 = new ParticleEmitter(pSys)
            {
                Position = -Vector3.UnitX, ParticlesPerSecond = 10
            };
            //pEmi = new ParticleEmitter(pSys) { Position = Vector3.UnitY, ParticlesPerSecond = 10 };
            //pEmi = new ParticleEmitter(pSys) { Position = new Vector3(Vector2.One, 0), ParticlesPerSecond = 10 };
            #endregion

            base.LoadContent();
        }
示例#3
0
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);
            SpriteBatchHelpers.Initialize(this.GraphicsDevice);
            Billboard.Initialize(this.GraphicsDevice, Content.Load <Effect>("Shaders/Billboarding"));

            #region Particles
            pSet = new ParticleSettings()
            {
                BlendState                   = BlendState.Additive
                , MaxParticles               = 100
                , Duration                   = TimeSpan.FromSeconds(1)
                , DurationRandomness         = 1
                , EmitterVelocitySensitivity = 1
                , MinXVelocity               = -0.2f
                , MaxXVelocity               = 0.2f
                , MinYVelocity               = -0.2f
                , MaxYVelocity               = 0.2f
                , Gravity        = Vector3.Zero
                , EndVelocity    = 0
                , MinColor       = Color.White
                , MaxColor       = Color.White
                , MinRotateSpeed = -0.1f
                , MaxRotateSpeed = 0.1f
                , MinStartSize   = 0.2f
                , MaxStartSize   = 0.3f
                , MinEndSize     = 1
                , MaxEndSize     = 2
            };

            var pTex = new Texture2D(GraphicsDevice, 5, 5);
            pTex.SetData(Enumerable.Repeat(Color.FromNonPremultiplied(0, 0, 255, 125), 25).ToArray());

            var pEff = Content.Load <Effect>("Shaders/Particles");

            pSys = new ParticleSystem(this, pSet, pTex, pEff, camera);
            pEmi = new ParticleEmitter(pSys)
            {
                Position = Vector3.Zero, ParticlesPerSecond = 10
            };
            pEmi = new ParticleEmitter(pSys)
            {
                Position = Vector3.UnitX, ParticlesPerSecond = 10
            };
            pEmi = new ParticleEmitter(pSys)
            {
                Position = Vector3.UnitY, ParticlesPerSecond = 10
            };
            pEmi = new ParticleEmitter(pSys)
            {
                Position = new Vector3(Vector2.One, 0), ParticlesPerSecond = 10
            };
            #endregion
        }
    public virtual void GiveToDamage(CharacterBase _Attacker, float _Damage, bool _Knockback = false)
    {
        if (m_Live == E_Live.DEAD)
        {
            return;
        }
        if (m_Immortal)
        {
            return;
        }
        if (m_Down)
        {
            return;
        }
        if (_Attacker.m_CharacterID == 0)
        {
            UIManager.Instacne.m_ComboViewer.AddCombo();
            Vector3   pos    = _Attacker.transform.position + _Attacker.transform.forward + (Vector3.up * 1.5f) + (_Attacker.transform.right * 0.5f);
            Billboard damage = ObjectPool.GetObject <Billboard>("DamageText");
            damage.Initialize(_Damage.ToString(), pos);
            damage.gameObject.SetActive(true);
        }

        m_Health -= _Damage;
        if (m_Health <= 0.0f)
        {
            m_Live = E_Live.DEAD;
            m_DeadEvent?.Invoke();
            m_Animator.CrossFade(m_AnimKeyDeath, 0.15f);
            SoundManager.Instance.PlayDefaultSound(m_DeathClip);
        }
        else
        {
            if (m_UseHitAnimation)
            {
                m_HitMotion = true;
                if (!_Knockback)
                {
                    m_Animator.CrossFade(m_AnimKeyHit, 0.15f);
                }
                else
                {
                    m_Down = true;
                    Vector3 dir = (_Attacker.transform.position - transform.position);
                    dir.y = 0.0f;
                    dir.Normalize();
                    transform.forward    = dir;
                    m_Rigidbody.velocity = (-dir * Mathf.Clamp((_Damage * 1.25f), 0.0f, 10.0f)) + (Vector3.up * Mathf.Clamp(_Damage * 0.5f, 1.5f, 2.5f));
                    m_Animator.CrossFade(m_AnimKeyHitAirStart, 0.15f);
                    StartCoroutine(C_HitAirCollision());
                }
            }
        }
    }
示例#5
0
    protected override void DamageEvent(float[] _Damage, float[] _CalculateDamage, int[] _DamageType, float _CalculateFullDamage, bool _Critical, Character _Attacker)
    {
        base.DamageEvent(_Damage, _CalculateDamage, _DamageType, _CalculateFullDamage, _Critical, _Attacker);

        LifeTimerWithObjectPool effect = ObjectPool.GetObject <LifeTimerWithObjectPool>(((E_DAMAGETYPE)_DamageType[0]).ToString()); // 데미지 이팩트

        if (effect)
        {
            effect.Initialize();
            effect.transform.localScale = Vector3.one * (m_BodyCollider.radius * 2.0f);
            effect.transform.position   = transform.position + new Vector3(0.0f, m_BodyCollider.center.y, 0.0f);
            effect.gameObject.SetActive(true);
        }

        float YOffset = 0.0f;

        for (int i = 0; i < _DamageType.Length; ++i)
        {
            Billboard b = ObjectPool.GetObject <Billboard>("DamageText");
            if (b)
            {
                b.gameObject.SetActive(true);
                b.Initialize(_Critical ? ((int)_CalculateDamage[i]).ToString() + "!!" : ((int)_CalculateDamage[i]).ToString(),
                             transform.position + new Vector3(0.0f, 1.0f + (m_BodyCollider.height * 0.5f + m_BodyCollider.center.y + YOffset), 0.0f),
                             2.0f);
                b.SetColor(Common.m_DamageColor[_DamageType[i]]);

                YOffset += 0.33f;
            }
        }

        if (m_Health <= 0.0f && m_PhotonView.IsMine)
        {
            SetStateAndAnimationNetwork(E_ANIMATION.DEAD, 0.15f, 1.0f, 0.0f);
            return;
        }

        if (m_PlayHitAnimation)
        {
            m_Animator.CrossFade("Hit", 0.1f);
            SetFreeze(0.5f);
        }

        if (m_IsAutoPlay)
        {
            float damage = 0.0f;
            for (int i = 0; i < _Damage.Length; ++i)
            {
                damage += _Damage[i];
            }
            Character  target = null;
            HateTarget t      = null;
            target = _Attacker as Character;

            if (target != null)
            {
                if (m_DicHateTarget.TryGetValue(target.gameObject.GetInstanceID(), out t))
                {
                    t.m_Hate += damage;
                }
                else
                {
                    m_DicHateTarget.Add(target.gameObject.GetInstanceID(), new HateTarget(target, damage));
                }
            }
        }
    }