IEnumerator Knockback2A(SkillBase attackerSkill, float force, float time = 1) { float startTime = Time.time; float elapsedTime = 0f; //Debug.Log("밀림시작"); bool isTestA = transform.position.x < attackerSkill.transform.position.x; ProjectileNormal projectile = attackerSkill.GetComponent <ProjectileNormal>(); if (projectile) { if (projectile.isMoveForwardRight != isTestA) { yield break; } } //if(test != isTestA) //{ // test = isTestA; // yield break; //} if (transform.position.x < attackerSkill.transform.position.x) { force = -force; } //bool isTestA = transform.position.x < attackerSkill.transform.position.x; //bool isTestC = false; while (elapsedTime < 1) { if (this.isDie) { break; } yield return(null); // 시간 판단 elapsedTime = (Time.time - startTime) / time; //bool isTestB = transform.position.x < attackerSkill.transform.position.x; //isTestC = isTestA == isTestB; //if (isTestC) //{ //} //if (force < 0) //{ // Debug.Log("날라가"); //} //isBlockMove = true; Vector2 pushPoint = new Vector2(attackerSkill.transform.position.x + force, transform.position.y); //float dis = Vector2.Distance((Vector2.right * pushPoint.x), (Vector2.right * transform.position.x)); //if (dis < 2) //{ // break; //} if (attackerSkill.IsCastTargetInSkillRange()) { //transform.position = Vector2.Lerp(transform.position, pushPoint, elapsedTime); transform.position = Vector2.MoveTowards(transform.position, pushPoint, 1); } else { break; } } //isBlockMove = false; pushCoroutine = null; }
override public void TriggerEffect() { //발사체 없으면 아무일 없음? ㅇㅇ 아무일 없어야 할 듯.. if (!skillEvent.projectile) { return; } skill.CollectTargets(); if (skill.targetList == null || skill.targetList.Count == 0) { if (skill.onTriggerEvent != null) { skill.onTriggerEvent(skill, skillEvent); } return; } for (int i = 0; i < skill.targetList.Count; i++) { BattleHero target = skill.targetList[i]; //풀링 안되어 있으면 함 GameObject projectileObj = Battle.GetObjectInPool(skillEvent.projectile.name); if (!projectileObj) { projectileObj = GameObject.Instantiate(skillEvent.projectile, skill.owner.transform.position, Quaternion.identity, skill.owner.transform.parent) as GameObject; projectileObj.transform.localPosition = Vector3.zero; projectileObj.name = skillEvent.projectile.name; projectileObj.SetActive(false); if (!projectileObj.GetComponent <BattleGroupElement>()) { projectileObj.AddComponent <BattleGroupElement>(); } Battle.AddObjectToPool(projectileObj); } if (!projectileObj) { if (skill.onTriggerEvent != null) { skill.onTriggerEvent(skill, skillEvent); } return; } //시작 위치로 이동 projectileObj.transform.position = skillEvent.projectilePivot.position;// + Vector3.back; //발사체에서 발생하는 스킬의 대상과, 스킬의 owner 설정 Projectile projectile = projectileObj.GetComponent <Projectile>(); IProjectile interfaceProjectile = null; if (projectile) { interfaceProjectile = projectile as IProjectile; } //발사 후 돌아오는 발사체 ReturnProjectile returnProjectile = projectileObj.GetComponent <ReturnProjectile>(); if (returnProjectile) { interfaceProjectile = returnProjectile as IProjectile; } ProjectileChain projectileChain = projectileObj.GetComponent <ProjectileChain>(); if (projectileChain) { interfaceProjectile = projectileChain as IProjectile; } ProjectileNormal projectileNormal = projectileObj.GetComponent <ProjectileNormal>(); if (projectileNormal) { interfaceProjectile = projectileNormal as IProjectile; } ProjectileGround projectileGround = projectileObj.GetComponent <ProjectileGround>(); if (projectileGround) { interfaceProjectile = projectileGround as IProjectile; } if (interfaceProjectile != null) { projectileObj.gameObject.SetActive(true); interfaceProjectile.Init(skill.owner, target, skill); interfaceProjectile.SetBattleGroup(skill.owner.battleGroup); interfaceProjectile.Launch(); } } if (skill.onTriggerEvent != null) { skill.onTriggerEvent(skill, skillEvent); } }