public void SetModeDisappear(GlobalCharacterInfo.CHAR_TYPE originType, bool isRight) { isEndAnimation = false; rigid2DController.velocity = new Vector2(0.0f, 0.0f); TurnOffComponent(); gameObject.transform.localScale = new Vector3(isRight ? 1 : -1, 1, 1); currentRenderer.enabled = true; gameObject.transform.position = new Vector3( referenceCharacter.transform.position.x, referenceCharacter.transform.position.y, referenceCharacter.transform.position.z); switch (originType) { case GlobalCharacterInfo.CHAR_TYPE.ALLIGATOR: currentRenderer.sprite = spriteAlligatorHit; break; case GlobalCharacterInfo.CHAR_TYPE.MAGITION: currentRenderer.sprite = spriteMagitionHit; break; case GlobalCharacterInfo.CHAR_TYPE.DRAGON: currentRenderer.sprite = spriteDragonHit; break; case GlobalCharacterInfo.CHAR_TYPE.HERO: currentRenderer.sprite = spriteHeroHit; break; } specificEffect.transform.position = new Vector3( referenceCharacter.transform.position.x, referenceCharacter.transform.position.y + 0.2f, referenceCharacter.transform.position.z); StartCoroutine(SmokeAnimation()); StartCoroutine(DisappearAnimation(isRight)); }
public void SetModeFalldown(GlobalCharacterInfo.CHAR_TYPE originType, bool isRight) { TurnOnComponent(); gameObject.transform.localScale = new Vector3(isRight ? 1 : -1, 1, 1); gameObject.transform.localEulerAngles = new Vector3(0, 0, 0); specificRenderer.sprite = spriteDownLine; switch (originType) { case GlobalCharacterInfo.CHAR_TYPE.ALLIGATOR: animationController.runtimeAnimatorController = Resources.Load("Anim/Player/dkrdjdiH_0") as RuntimeAnimatorController; break; case GlobalCharacterInfo.CHAR_TYPE.MAGITION: animationController.runtimeAnimatorController = Resources.Load("Anim/Player/wichH_0") as RuntimeAnimatorController; break; case GlobalCharacterInfo.CHAR_TYPE.DRAGON: animationController.runtimeAnimatorController = Resources.Load("Anim/Player/DragonH_0") as RuntimeAnimatorController; break; case GlobalCharacterInfo.CHAR_TYPE.HERO: animationController.runtimeAnimatorController = Resources.Load("Anim/Player/HeroH_0") as RuntimeAnimatorController; break; } colliderController.size = moveScript.GetCollisionArea(); isLand = false; //위치 제어 gameObject.transform.position = new Vector3( referenceCharacter.transform.position.x, referenceCharacter.transform.position.y + 5.0f, referenceCharacter.transform.position.z); }
public void ActionSkill(GlobalCharacterInfo.CHAR_TYPE currentType) { GlobalSkillInfo.SKILL_GLOBAL_DEFAULT_DATA.TryGetValue(currentType, out defaultSkillInfo); duringSkill = true; moveScript.SetInvInvincibility(); moveScript.SetHold(); switch (currentType) { case GlobalCharacterInfo.CHAR_TYPE.ALLIGATOR: StartCoroutine(AlligatorSkill()); break; case GlobalCharacterInfo.CHAR_TYPE.MAGITION: StartCoroutine(MagitionSkill()); break; case GlobalCharacterInfo.CHAR_TYPE.DRAGON: StartCoroutine(DragonSkill()); break; case GlobalCharacterInfo.CHAR_TYPE.HERO: StartCoroutine(HeroSkill()); break; } }
private IEnumerator SwitchAnimation(GlobalCharacterInfo.CHAR_TYPE originType, GlobalCharacterInfo.CHAR_TYPE switchType) { //모든 설정 초기화. moveScript.ResetCharacterInfo(); //Hold & Imune 설정 moveScript.SetHold(); moveScript.SetInvInvincibility(); // 우선 스프라이트가 위에서 설정되서 내려온다 // Effect Script On 변경할 캐릭터가 내려와야함. Debug.Log(originType); Debug.Log(switchType); effectScript.SetModeFalldown(switchType, moveScript.IsRight()); //캐릭터 공중에 올려놓는다. //캐릭터가 지면에 닿을동안 대기. yield return(new WaitUntil(() => effectScript.IsLanding() == true)); //닿으면 연기 Effect 설정. //캐릭터 변경. effectScript.SetModeDisappear(originType, moveScript.IsRight()); moveScript.setCharacterType(switchType); //연기 effect 와 동시에 캐릭터 왼쪽 오른쪽 여부 판단하여 애니메이션 작동 yield return(new WaitUntil(() => effectScript.IsEndAni() == true)); //모든 애니메이션 동작 완료 시 해당 다시 Release moveScript.ReleaseHold(); moveScript.ReleaseInvincibility(); }
// Use this for initialization void Awake() { characterQueue = new CustomCircularQueue <GlobalCharacterInfo.CHAR_TYPE>(); currentType = GlobalCharacterInfo.CHAR_TYPE.ALLIGATOR; moveScript = characterObject.GetComponent <Playermove>(); effectScript = characterSwitchEffectObject.GetComponent <CharacterSwitchEffect>(); foreach (GlobalCharacterInfo.CHAR_TYPE charType in (GlobalCharacterInfo.CHAR_TYPE[])Enum.GetValues(typeof(GlobalCharacterInfo.CHAR_TYPE))) { characterQueue.push(charType); } }
public void setParameter(PlayerWeaponData argPlayerData, PlayerDefaultBulletData argBulletData, GlobalCharacterInfo.CHAR_TYPE argType) { currentPlayerData = argPlayerData; currentBulletData = argBulletData; currentPlayerType = argType; attackController.SetAttackAxisInfo(new Vector3(0, 0, -currentPlayerData.m_fWeaponAxisStart), new Vector3(currentPlayerData.m_v2WeaponAxisPosition.x, currentPlayerData.m_v2WeaponAxisPosition.y, 0)); attackController.SetEffectInfo(currentPlayerData.m_v3EffectPosition, currentPlayerData.m_v3EffectScale); attackController.SetEffectImage(currentPlayerData.m_sWaeponEffectPath); weaponBoxCollider2D.enabled = currentPlayerData.m_bIsEnableWeaponHit; weaponBoxCollider2D.size = currentPlayerData.m_v2WeaponColliderArea; weaponBoxCollider2D.offset = currentPlayerData.m_v2Weaponoffset; gameObject.transform.localPosition = currentPlayerData.m_v2WeaponPosition; renderObject.sprite = Resources.Load <Sprite>(currentPlayerData.m_sWaeponSpritePath); }
private static SkillInfo generateDefaultSkillInfo(GlobalCharacterInfo.CHAR_TYPE arg) { SkillInfo ret = new SkillInfo(); switch (arg) { case GlobalCharacterInfo.CHAR_TYPE.ALLIGATOR: // Summon Data 만 설정한다. break; case GlobalCharacterInfo.CHAR_TYPE.MAGITION: ret.m_sSkillBullet.magitionSkill.startPostion = new Vector2(-3.0f, 5.0f); ret.m_sSkillBullet.magitionSkill.endPostion = new Vector2(-1.0f, 8.0f); ret.m_sSkillBullet.magitionSkill.circleRenderFrame = 100.0f; ret.m_sSkillBullet.magitionSkill.handsDegree = 125.0f; ret.m_sSkillBullet.magitionSkill.handsCount = 10; ret.m_sSkillBullet.magitionSkill.offsetRandomDistMax = 1; ret.m_sSkillBullet.magitionSkill.offsetRandomDegMax = 10.0f; ret.m_sSkillBullet.magitionSkill.firstArea = new Vector2(0.0f, 1.0f); ret.m_sSkillBullet.magitionSkill.lastArea = new Vector2(15.0f, 1.0f); break; case GlobalCharacterInfo.CHAR_TYPE.DRAGON: ret.m_sSkillBullet.dragonSkill.sparkXArea = 1.0f; ret.m_sSkillBullet.dragonSkill.laserXArea = 10.0f; //ret.m_sSkillBullet.dragonSkill.offset = new Vector2(ret.m_sSkillBullet.dragonSkill.sparkArea.x / 2, 0.0f); ret.m_sSkillBullet.dragonSkill.eachDuration = 60.0f; ret.m_sSkillBullet.dragonSkill.gapDuration = 200.0f; break; case GlobalCharacterInfo.CHAR_TYPE.HERO: // Skill 이 없으므로 해당 데이터 설정하지 않는다. break; } return(ret); }
// Update is called once per frame void Update() { if (isCharChangeCoolTime && moveScript.IsPossibleCharaterChange()) { if (Input.GetKeyDown(KeyCode.A)) { //A를 누를 시 GlobalCharacterInfo.CHAR_TYPE origin = characterQueue.getVaule(); characterQueue.goLeft(); GlobalCharacterInfo.CHAR_TYPE next = characterQueue.getVaule(); StartCoroutine(SwitchAnimation(origin, next)); } else if (Input.GetKeyDown(KeyCode.S)) { //S를 누를 시 GlobalCharacterInfo.CHAR_TYPE origin = characterQueue.getVaule(); characterQueue.goRight(); GlobalCharacterInfo.CHAR_TYPE next = characterQueue.getVaule(); StartCoroutine(SwitchAnimation(origin, next)); } } }
public void setCharacterType(GlobalCharacterInfo.CHAR_TYPE argType) { selectedCharacterType = argType; ReLoadingCharacter(); }