protected override void ApplyEffect() { effectElapsed = Stats.EffectDuration; base.ApplyEffect(); effect = Instantiate(ShieldEffect, transform.position, transform.rotation).GetComponent <ShieldEffect>(); effect.Attach(this.transform); }
public void Start() { shield = GetComponent <ShieldEffect>(); SetTrailPosition(); curPos = new Vector2(transform.position.x, transform.position.y); targetCurPos = new Vector2(trailPosition.x, trailPosition.y); velocity = new Vector2(0f, 0f); targetOffset = new Vector2(0f, 0f); }
private void ClearWeaponEffect() // 무기 Effect 지우기 { BowEffect.SetActive(false); ArrowEffect.SetActive(false); SpearEffect.SetActive(false); ShieldEffect.SetActive(false); CoBowEffect.SetActive(false); CoArrowEffect.SetActive(false); CoSpearEffect.SetActive(false); CoShieldEffect.SetActive(false); }
protected virtual void OnTriggerExit(Collider other) { if (other.gameObject.tag == "Barrier") { spawnState = new PushedStateS(spawn, false); ShieldEffect se = other.gameObject.GetComponent <ShieldEffect>(); if (se) { se.ContactEffect(transform.position); } return; } }
public void OnTriggerEnter2D(Collider2D collision) { if (collision.tag == "Player") { ShieldEffect se = PlayerCharacter.instance.GetComponentInChildren <ShieldEffect>(); if (se) { se.timer = 0; DestroyObject(gameObject); return; } GameObject shield = GameObject.Instantiate(shieldEffect); shield.transform.position = PlayerCharacter.instance.GetPosition(); shield.transform.parent = PlayerCharacter.instance.tr; DestroyObject(gameObject); } }
public void TestShieldEffect() { ShieldEffect NewEffect = (ShieldEffect)DummyMap.DicEffect[ShieldEffect.Name].Copy(); BaseAutomaticSkill DummySkill = CreateDummySkill(DummyMap.DicRequirement[PassiveRequirement.Name].Copy(), DummyMap.DicAutomaticSkillTarget[EffectActivationSelf.Name].Copy(), NewEffect); Squad DummySquad = CreateDummySquad(); GlobalDeathmatchContext.SetContext(DummySquad, DummySquad.CurrentLeader, DummySquad.CurrentLeader.Pilot, DummySquad, DummySquad.CurrentLeader, DummySquad.CurrentLeader.Pilot, null); Assert.IsFalse(GlobalDeathmatchContext.EffectOwnerUnit.Boosts.ShieldModifier); DummySkill.AddSkillEffectsToTarget(string.Empty); Assert.IsTrue(GlobalDeathmatchContext.EffectOwnerUnit.Boosts.ShieldModifier); }
// private void Start() { tf = GetComponent <Transform>(); sr = GetComponent <SpriteRenderer>(); anim = GetComponent <Animator>(); rb = GetComponent <Rigidbody2D>(); col = GetComponent <BoxCollider2D>(); // colOffset[0] = new Vector2(0, 0); colOffset[1] = new Vector2(0, -1.5f); colSize[0] = new Vector2(13.0f, 28.0f); colSize[1] = new Vector2(13.0f, 25.0f); // eye = tf.GetChild(0).GetComponent <Eye>(); eye.dummy = this; // arm = tf.GetChild(1).GetComponent <Arm>(); arm.dummy = this; // shieldEffect = tf.GetChild(2).GetComponent <ShieldEffect>(); shieldEffect.dummy = this; // UIManager.instance.AddRSC(beginRSC); }
void Awake() { shieldEffect = transform.FindChild ("ShieldEffect").GetComponent<ShieldEffect>(); parentHole = transform.parent.GetComponent<ZombieHole> (); }
void Update() { // 좌클릭하면 회전시작 if (isPlay) { if (Input.GetKeyDown(KeyCode.Mouse0)) { isRotating = true; RotateInit(); } // 변, 각, 무기 Effect ClearWeaponEffect(); if (!isRotating) { ClearTri(); switch (Tstate) { case 0: if (onHypo) { HypoEffect.SetActive(true); } else if (onHeight && isCo) { HeightEffect.SetActive(true); } else if (onBase && !isCo) { BaseEffect.SetActive(true); } break; case 1: if (onHypo) { HypoDeleteEffect.SetActive(true); } else if (onHeight && !isCo) { BowEffect.SetActive(true); ArrowEffect.SetActive(true); BaseLineEffect.SetActive(true); } else if (onBase && isCo) { CoBowEffect.SetActive(true); CoArrowEffect.SetActive(true); HeightLineEffect.SetActive(true); } break; case 2: if (onHeight) { HeightDeleteEffect.SetActive(true); } else if (onHypo && isCo) { CoSpearEffect.SetActive(true); HypoCoLineEffect.SetActive(true); } else if (onBase && isCo) { CoShieldEffect.SetActive(true); } break; case 3: if (onBase) { BaseDeleteEffect.SetActive(true); } else if (onHypo && !isCo) { SpearEffect.SetActive(true); HypoIdleLineEffect.SetActive(true); } else if (onHeight && !isCo) { ShieldEffect.SetActive(true); } break; } if (onCoAngle) { if (isCo) { CoAngleDeleteEffect.SetActive(true); } else if (!isCo) { CoAngleEffect.SetActive(true); } } if (onIdleAngle && isCo) { CoAngleDeleteEffect.SetActive(true); IdleAngleEffect.SetActive(true); } } // 키보드'space' or CoAngle 클릭시 if (Input.GetKeyDown(KeyCode.Space) || (Input.GetKeyDown(KeyCode.Mouse0) && onCoAngle)) { isCo = !isCo; } // Co상태에서 IdleAngle 클릭시 if (isCo && Input.GetKeyDown(KeyCode.Mouse0) && onIdleAngle) { isCo = false; } if (isCo) { CoAngle.SetActive(true); } else { CoAngle.SetActive(false); } // 키보드'w' or Hypo 클릭시 if (Input.GetKeyDown(KeyCode.W) || (Input.GetKeyDown(KeyCode.Mouse0) && onHypo)) { switch (Tstate) { case 0: Tstate = 1; if (!isCo) { MakeCircle(HypoIdleCircle); } else { MakeCircle(HypoCoCircle); } break; case 1: Tstate = 0; HypoIdleCircle.SetActive(false); HypoCoCircle.SetActive(false); break; case 2: if (isCo) { if (Input.GetKeyDown(KeyCode.W)) { SetAnimationParameters(0, 1); StartCoroutine("Cosec"); RotateFinish(); } else { CoSpear.SetActive(true); isLaunching = 5; } } break; case 3: if (!isCo) { if (Input.GetKeyDown(KeyCode.W)) { SetAnimationParameters(0, 1); StartCoroutine("Sec"); RotateFinish(); } else { Spear.SetActive(true); isLaunching = 2; } } break; } } // 키보드'd' or Height 클릭시 if (Input.GetKeyDown(KeyCode.D) || (Input.GetKeyDown(KeyCode.Mouse0) && onHeight)) { switch (Tstate) { case 0: MakeCircle(HeightCircle); Tstate = 2; break; case 1: if (!isCo) { if (Input.GetKeyDown(KeyCode.D)) { SetAnimationParameters(0, 1); StartCoroutine("Sin"); RotateFinish(); } else { Bow.SetActive(true); Arrow.SetActive(true); isLaunching = 1; } } break; case 2: Tstate = 0; HeightCircle.SetActive(false); break; case 3: if (!isCo) { if (Input.GetKeyDown(KeyCode.D)) { SetAnimationParameters(0, 1); StartCoroutine("Tan"); RotateFinish(); } else { Shield.SetActive(true); isLaunching = 3; } } break; } } // 키보드'a' or Base 클릭시 if (Input.GetKeyDown(KeyCode.A) || (Input.GetKeyDown(KeyCode.Mouse0) && onBase)) { switch (Tstate) { case 0: MakeCircle(BaseCircle); Tstate = 3; break; case 1: if (isCo) { if (Input.GetKeyDown(KeyCode.A)) { SetAnimationParameters(0, 1); StartCoroutine("Cos"); RotateFinish(); } else { CoBow.SetActive(true); CoArrow.SetActive(true); isLaunching = 4; } } break; case 2: if (isCo) { if (Input.GetKeyDown(KeyCode.A)) { SetAnimationParameters(0, 1); StartCoroutine("Cotan"); RotateFinish(); } else { CoShield.SetActive(true); isLaunching = 6; } } break; case 3: Tstate = 0; BaseCircle.SetActive(false); break; } } ClearEdgeActivated(); switch (Tstate) { case 0: Tri.transform.localScale = StandardScale; break; case 1: HypoActivated.SetActive(true); HypoLength.SetActive(true); Tri.transform.localScale = StandardScale * 0.807f; break; case 2: HeightActivated.SetActive(true); HeightLength.SetActive(true); Tri.transform.localScale = StandardScale * 1.365f; break; case 3: BaseActivated.SetActive(true); BaseLength.SetActive(true); Tri.transform.localScale = StandardScale; break; } // 마우스 떼면 회전종료 if (Input.GetKeyUp(KeyCode.Mouse0)) { isRotating = false; if (isLaunching != 0) { switch (isLaunching) { case 1: StartCoroutine("Sin"); break; case 2: StartCoroutine("Sec"); break; case 3: StartCoroutine("Tan"); break; case 4: StartCoroutine("Cos"); break; case 5: StartCoroutine("Cosec"); break; case 6: StartCoroutine("Cotan"); break; } RotateFinish(); } } if (isRotating) { MousePresentPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition) - CoR; // 마우스 현재위치는 깨다 기준 상대적 위치 RotateAngle = Vector2.Angle(MouseStartPosition, MousePresentPosition); // RotateAngle 계산 // Vertor2.Angle은 항상 0<=Angle<180이므로 외적을 이용해서 반환 if (Vector3.Cross(MouseStartPosition, MousePresentPosition).z < 0) { RotateAngle = 360f - RotateAngle; } // 회전 및 삼각형 중심 - 회전 중심 위치 조정 Tri.transform.rotation = TriStartRotation * Quaternion.Euler(Vector3.forward * RotateAngle); // Hypo, Height, Base Length 같이 회전 (역방향) HypoLength.transform.rotation = Quaternion.Euler(-(Tri.transform.rotation * Vector3.forward)); HeightLength.transform.rotation = Quaternion.Euler(-(Tri.transform.rotation * Vector3.forward)); BaseLength.transform.rotation = Quaternion.Euler(-(Tri.transform.rotation * Vector3.forward)); Tri.transform.position = Quaternion.Euler(Vector3.forward * RotateAngle) * TriStartPosition + CoR; } if (Input.GetKeyDown(KeyCode.Mouse1)) { Reset(); } // 우클릭 시 초기화 } }
private void LoadPredefinedSkills() { { SkillDefinition skill = new SkillDefinition(); skill.InternalName = "Slash_1"; skill.DisplayedName = "Slash I"; skill.BaseUsage = 8; skill.AllowedPositions = PartyPositionFlag.Attack; skill.PerformedPhase = CombatPhase.AttackPhase; skill.SetTag(SkillTag.Melee, true); skill.SetTag(SkillTag.Attack, true); AttackEffect effect = new AttackEffect(); effect.DamageType = DamageType.Physical; effect.BaseDamage = 10; effect.CharacterScaling = 1.0f; effect.ItemScaling = 1.0f; skill.Effect = effect; StandardSingleTargeting targeting = new StandardSingleTargeting(); skill.Targeting = targeting; skill.LogTextFormat = "Generic_Attack_EffectLogText"; AddSkillTemplate(skill); } { SkillDefinition skill = new SkillDefinition(); skill.InternalName = "FirstAid_1"; skill.DisplayedName = "First Aid"; skill.BaseUsage = 8; skill.AllowedPositions = PartyPositionFlag.Defense | PartyPositionFlag.Support; skill.PerformedPhase = CombatPhase.RecoveryPhase; RecoverEffect effect = new RecoverEffect(); effect.BaseRecover = 4; effect.CharacterScaling = 1.0f; effect.ItemScaling = 0.0f; skill.Effect = effect; LowestHealthTargeting targeting = new LowestHealthTargeting(); targeting.ByPercentage = true; targeting.TargetAllyParty = true; skill.Targeting = targeting; skill.LogTextFormat = "Generic_Heal_EffectLogText"; AddSkillTemplate(skill); } { SkillDefinition skill = new SkillDefinition(); skill.InternalName = "ShieldUp_1"; skill.DisplayedName = "Shield Up"; skill.BaseUsage = 8; skill.AllowedPositions = PartyPositionFlag.Defense; skill.PerformedPhase = CombatPhase.PreparationPhase; ShieldEffect effect = new ShieldEffect(); effect.Type = ShieldEffect.ShieldType.GrantArmor; effect.BaseShield = 6; effect.CharacterScaling = 0.5f; effect.ItemScaling = 1.0f; skill.Effect = effect; PositionTargeting targeting = new PositionTargeting(); targeting.TargetAlly = true; targeting.Position = PartyPosition.Defense; skill.Targeting = targeting; skill.LogTextFormat = "Generic_Armor_EffectLogText"; AddSkillTemplate(skill); } { SkillDefinition skill = new SkillDefinition(); skill.InternalName = "ManaBolt_1"; skill.DisplayedName = "Mana Bolt I"; skill.BaseUsage = 8; skill.AllowedPositions = PartyPositionFlag.Support | PartyPositionFlag.Attack; skill.PerformedPhase = CombatPhase.ChannelPhase; skill.SetTag(SkillTag.Cast, true); skill.SetTag(SkillTag.Ranged, true); AttackEffect effect = new AttackEffect(); effect.DamageType = DamageType.Magic; effect.BaseDamage = 6; effect.CharacterScaling = 1.0f; effect.ItemScaling = 0.5f; skill.Effect = effect; StandardSingleTargeting targeting = new StandardSingleTargeting(); skill.Targeting = targeting; skill.LogTextFormat = "Generic_Attack_EffectLogText"; AddSkillTemplate(skill); } { SkillDefinition skill = new SkillDefinition(); skill.InternalName = "Counterspell_1"; skill.DisplayedName = "Counterspell I"; skill.BaseUsage = 6; skill.AllowedPositions = PartyPositionFlag.Support; skill.PerformedPhase = CombatPhase.ReactionPhase; skill.SetTag(SkillTag.Cast, true); skill.SetTag(SkillTag.Ranged, true); AttackEffect effect = new AttackEffect(); effect.DamageType = DamageType.Magic; effect.BaseDamage = 6; effect.CharacterScaling = 1.0f; effect.ItemScaling = 0.5f; skill.Effect = effect; StandardSingleTargeting targeting = new StandardSingleTargeting(); skill.Targeting = targeting; InterruptCastingTrigger triggering = new InterruptCastingTrigger(); skill.Triggering = triggering; skill.LogTextFormat = "Generic_Attack_EffectLogText"; AddSkillTemplate(skill); } }