/// <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")); }
/// <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(); }
/// <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()); } } } }
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)); } } } }