private Motion SimpleAttackAndDamageMotion(Animator attackerAnimator, Animator damagedAnimator) { List <Motion> motions = new List <Motion>(); // PLAY ATTACK ANIMATION Motion motionAttack = new AttackMotion(this, attackerAnimator, 1); motions.Add(motionAttack); if (GameSoundManager.Instance != null) { if (GameSoundManager.Instance.audioSource != null) { // ATTACK SOUND Motion motionAttackSound = new SoundMotion(this, 1, GameSoundManager.Instance.audioSource, GameSoundManager.Instance.audioClips[0], true); motions.Add(motionAttackSound); // DAMAGE SOUND Motion motionDamageSound = new SoundMotion(this, 1, GameSoundManager.Instance.audioSource, GameSoundManager.Instance.audioClips[2], true); motions.Add(motionDamageSound); } } // PLAY DAMAGE ANIMATION Motion motionDamage = new DamageMotion(this, damagedAnimator, 1); motions.Add(motionDamage); CombineMotion combineAttackMotion = new CombineMotion(this, 1, motions); return(combineAttackMotion); }
private Motion SimpleAttackToCombineMotion(Animator attackerAnimator, List <Animator> damagedAnimator) { List <Motion> motions = new List <Motion>(); // PLAY ATTACK ANIMATION Motion motionAttack = new AttackMotion(this, attackerAnimator, 1); motions.Add(motionAttack); if (GameSoundManager.Instance != null) { if (GameSoundManager.Instance.audioSource != null) { // ATTACK SOUND Motion motionAttackSound = new SoundMotion(this, 1, GameSoundManager.Instance.audioSource, GameSoundManager.Instance.audioClips[0], true); motions.Add(motionAttackSound); // DAMAGE SOUND Motion motionDamageSound = new SoundMotion(this, 1, GameSoundManager.Instance.audioSource, GameSoundManager.Instance.audioClips[2], true); motions.Add(motionDamageSound); } } // PLAY DAMAGE ANIMATION FOR ALL THE ENEMIES for (int i = 0; i < damagedAnimator.Count; i++) { Motion motionDamage = new DamageMotion(this, damagedAnimator[i], 1); motions.Add(motionDamage); } CombineMotion combineAttackMotion = new CombineMotion(this, 1, motions); return(combineAttackMotion); }
public Motion CombineMoveMotion(Vector3 actualPosition, Vector3 endPosition, GameObject[] enemies) { UnitMovePositioner movePositioner = new UnitMovePositioner(4f); Dictionary <GameObject, Vector3[]> enmiesAndPathToMove = movePositioner.GetRoutePositions(enemies, movePositioner.GetPositionType(enemies.Length), endPosition, actualPosition); List <Motion> motionsCombineMove = new List <Motion>(); if (GameSoundManager.Instance != null) { if (GameSoundManager.Instance.audioSource != null) { Motion motionMoveSound = new SoundMotion(this, 1, GameSoundManager.Instance.audioSource, GameSoundManager.Instance.audioClips[4], false, true); motionsCombineMove.Add(motionMoveSound); } } int index = 0; foreach (KeyValuePair <GameObject, Vector3[]> entry in enmiesAndPathToMove) { AnimatedMotion motionMove = new MoveMotion(this, entry.Key.GetComponent <Animator>(), 1); motionsCombineMove.Add(motionMove); List <Motion> extraMotionsCombineStopMove = new List <Motion>(); Motion motionTweenMove = new MovePathTweenMotion(this, entry.Key.transform, 1, entry.Value); Motion motionIdlle = new IdlleMotion(this, entry.Key.GetComponent <Animator>(), 2, true); extraMotionsCombineStopMove.Add(motionTweenMove); extraMotionsCombineStopMove.Add(motionIdlle); // esto solo lo hago para detener el sonido de los pasos if (enmiesAndPathToMove.Count - 1 == index) { List <Configurable> configurables = new List <Configurable>(); if (GameSoundManager.Instance != null) { if (GameSoundManager.Instance.audioSource != null) { AudioSourceGenericContainer audioContainer = new AudioSourceGenericContainer(GameSoundManager.Instance.audioSource); StopSoundConfigureAnimotion <AudioSourceGenericContainer, Transform> stopSoundConfigureAnimotion = new StopSoundConfigureAnimotion <AudioSourceGenericContainer, Transform>(audioContainer, 2); configurables.Add(stopSoundConfigureAnimotion); } } CombineMotion extraCombineMoveStopMotion = new CombineMotion(this, 1, extraMotionsCombineStopMove, configurables); motionsCombineMove.Add(extraCombineMoveStopMotion); } else { CombineMotion extraCombineMoveStopMotion = new CombineMotion(this, 1, extraMotionsCombineStopMove); motionsCombineMove.Add(extraCombineMoveStopMotion); } index++; } CombineMotion combinMoveMotion = new CombineMotion(this, 1, motionsCombineMove); return(combinMoveMotion); }
private Motion AttackWithShieldMotion(Animator attackerAnimator, Animator damagedAnimator) { List <Motion> motions = new List <Motion>(); List <Configurable> configureAnimotion = new List <Configurable>(); // PLAY ATTACK ANIMATION Motion motionAttack = new AttackMotion(this, attackerAnimator, 1); motions.Add(motionAttack); if (GameSoundManager.Instance != null) { if (GameSoundManager.Instance.audioSource != null) { // ATTACK SOUND Motion motionAttackSound = new SoundMotion(this, 1, GameSoundManager.Instance.audioSource, GameSoundManager.Instance.audioClips[0], true); motions.Add(motionAttackSound); // DAMAGE SOUND Motion motionDamageSound = new SoundMotion(this, 1, GameSoundManager.Instance.audioSource, GameSoundManager.Instance.audioClips[2], true); motions.Add(motionDamageSound); } } // CREAMOS EL SHIELD GameObject shield = Instantiate(shieldPrefab, damagedAnimator.transform.position, Quaternion.identity); shield.SetActive(true); // PLAY DAMAGE ANIMATION Motion motionDamage = new DamageMotion(this, damagedAnimator, 1); motions.Add(motionDamage); List <Motion> shieldMotions = new List <Motion>(); Motion motionShieldDamage = new ShieldMotion(this, shield.GetComponent <Animator>(), 1); shieldMotions.Add(motionShieldDamage); DestroyGOConfigureAnimotion <Transform, Transform> ShieldDestroyConfigAnimotion = new DestroyGOConfigureAnimotion <Transform, Transform>(shield.transform, 2); configureAnimotion.Add(ShieldDestroyConfigAnimotion); CombineMotion combineShieldMotion = new CombineMotion(this, 1, shieldMotions, configureAnimotion); motions.Add(combineShieldMotion); CombineMotion combineAttackMotion = new CombineMotion(this, 1, motions); return(combineAttackMotion); }
public Motion MoveMotion(GameObject goKimbok, Vector3 endPosition) { List <Motion> motionsMove = new List <Motion>(); Animator animator = goKimbok.GetComponent <Animator>(); Motion motionMove = new MoveMotion(this, animator, 1); motionsMove.Add(motionMove); List <Configurable> configurables = new List <Configurable>(); if (GameSoundManager.Instance != null) { if (GameSoundManager.Instance.audioSource != null) { Motion motionMoveSound = new SoundMotion(this, 1, GameSoundManager.Instance.audioSource, GameSoundManager.Instance.audioClips[4], false, true); motionsMove.Add(motionMoveSound); AudioSourceGenericContainer audioContainer = new AudioSourceGenericContainer(GameSoundManager.Instance.audioSource); StopSoundConfigureAnimotion <AudioSourceGenericContainer, Transform> stopSoundConfigureAnimotion = new StopSoundConfigureAnimotion <AudioSourceGenericContainer, Transform>(audioContainer, 2); configurables.Add(stopSoundConfigureAnimotion); } } List <Motion> motionsStopMove = new List <Motion>(); Motion motionTweenMove = new MoveTweenMotion(this, goKimbok.transform, 1, endPosition, 1); Motion motionIdlle = new IdlleMotion(this, animator, 2, true); motionsStopMove.Add(motionTweenMove); motionsStopMove.Add(motionIdlle); CombineMotion combineStopMotion = new CombineMotion(this, 1, motionsStopMove, configurables); motionsMove.Add(combineStopMotion); CombineMotion combinMoveMotion = new CombineMotion(this, 1, motionsMove); return(combinMoveMotion); }
public Motion RearangePositionAfterCombineMotion(List <GameObject> kimbokos, Vector3 actualPosition, int reproductionOrder = 1) { List <Motion> motionsSpawnCombine = new List <Motion>(); UnitMovePositioner movePositioner = new UnitMovePositioner(4f); // - DESPUES ME DEBERIA FIJAR SI TENGO ENEMIGOS EN LA QUE SELECCIONE, Y SI TENGO DEBERIA AGREGAR EL COMANDO DE REPOSICIONARLOS if (kimbokos.Count > 1) { POSITIONTYPE positionTypeToRearrange = movePositioner.GetPositionType(kimbokos.Count); Vector3[] finalRearrangePositions = movePositioner.GetPositions(actualPosition, positionTypeToRearrange); // SONIDO DE CUANDO SE MUEVEN PARA REPOSICIONARSE if (GameSoundManager.Instance != null) { if (GameSoundManager.Instance.audioSource != null) { Motion motionMoveSound = new SoundMotion(this, 1, GameSoundManager.Instance.audioSource, GameSoundManager.Instance.audioClips[4], false, true); motionsSpawnCombine.Add(motionMoveSound); } } // deberia recorrer la lista de unidades, y generar una move comand para posicionarse en el lugar que tiene cada una del cuadrado for (int i = 0; i < kimbokos.Count; i++) { List <Motion> motionsCombineSpawnMoveSquare = new List <Motion>(); int shortNameHash = Animator.StringToHash("Base Layer" + ".Idlle"); Animator animatorAux = kimbokos[i].GetComponent <Animator>(); // LOS PONGO EN ESTADO MOVE PARA LA ANIMACION Motion motionMove = new MoveMotion(this, animatorAux, 1, false, shortNameHash); //Motion motionMove = new MoveMotion(this, animatorAux, 1); motionsSpawnCombine.Add(motionMove); List <Motion> motionsCombineSpawnStopMoveSquare = new List <Motion>(); // LOS MUEVO DESDE DONDE ESTAN HASTA LA POSICION FINAL Motion motionTwMove = new MoveTweenMotion(this, kimbokos[i].transform, 1, finalRearrangePositions[i], 1); motionsCombineSpawnStopMoveSquare.Add(motionTwMove); // LOS PONGO EN ESTADO IDLLE Motion motionIdlle = new IdlleMotion(this, animatorAux, 2, true); motionsCombineSpawnStopMoveSquare.Add(motionIdlle); // esto solo lo hago para detener el sonido de los pasos if (kimbokos.Count - 1 == i) { List <Configurable> configurables = new List <Configurable>(); if (GameSoundManager.Instance != null) { if (GameSoundManager.Instance.audioSource != null) { AudioSourceGenericContainer audioContainer = new AudioSourceGenericContainer(GameSoundManager.Instance.audioSource); StopSoundConfigureAnimotion <AudioSourceGenericContainer, Transform> stopSoundConfigureAnimotion = new StopSoundConfigureAnimotion <AudioSourceGenericContainer, Transform>(audioContainer, 2); configurables.Add(stopSoundConfigureAnimotion); } } CombineMotion combineStopMotion = new CombineMotion(this, 1, motionsCombineSpawnStopMoveSquare, configurables); motionsCombineSpawnMoveSquare.Add(combineStopMotion); } else { CombineMotion combineStopMotion = new CombineMotion(this, 1, motionsCombineSpawnStopMoveSquare); motionsCombineSpawnMoveSquare.Add(combineStopMotion); } CombineMotion combinSquarePositionMotion = new CombineMotion(this, 1, motionsCombineSpawnMoveSquare); motionsSpawnCombine.Add(combinSquarePositionMotion); } } CombineMotion combinMoveMotion = new CombineMotion(this, reproductionOrder, motionsSpawnCombine); return(combinMoveMotion); }
public Motion MoveToSquarePosition(List <GameObject> kimbokos, Vector3 actualPosition) { List <Motion> motionsSpawnCombine = new List <Motion>(); UnitMovePositioner movePositioner = new UnitMovePositioner(4f); // 2 - DESPUES ME DEBERIA FIJAR SI TENGO ENEMIGOS EN LA QUE SELECCIONE, Y SI TENGO DEBERIA AGREGAR EL COMANDO DE REPOSICIONARLOS if (kimbokos.Count > 0) { // AHORA TENGO QUE GENERAR EL CUADRADO DE POSICIONES PARA CADA UNA Vector3[] squarePositions = movePositioner.GetPositions(actualPosition, POSITIONTYPE.SQUARE); // SONIDO DE CUANDO SE MUEVEN PARA REPOSICIONARSE if (GameSoundManager.Instance != null) { if (GameSoundManager.Instance.audioSource != null) { Motion motionMoveSound = new SoundMotion(this, 1, GameSoundManager.Instance.audioSource, GameSoundManager.Instance.audioClips[4], false, true); motionsSpawnCombine.Add(motionMoveSound); } } // deberia recorrer la lista de unidades, y generar una move comand para posicionarse en el lugar que tiene cada una del cuadrado for (int i = 0; i < kimbokos.Count; i++) { Animator animatorAux = kimbokos[i].GetComponent <Animator>(); List <Motion> motionsCombineSpawnMoveSquare = new List <Motion>(); Motion motionMove = new MoveMotion(this, animatorAux, 1); motionsCombineSpawnMoveSquare.Add(motionMove); List <Motion> motionsCombineSpawnStopMoveSquare = new List <Motion>(); Motion motionTwMove = new MoveTweenMotion(this, kimbokos[i].transform, 1, squarePositions[i], 1); Motion motionIdlle = new IdlleMotion(this, animatorAux, 2, true); motionsCombineSpawnStopMoveSquare.Add(motionTwMove); motionsCombineSpawnStopMoveSquare.Add(motionIdlle); // esto solo lo hago para detener el sonido de los pasos if (kimbokos.Count - 1 == i) { List <Configurable> configurables = new List <Configurable>(); if (GameSoundManager.Instance != null) { if (GameSoundManager.Instance.audioSource != null) { AudioSourceGenericContainer audioContainer = new AudioSourceGenericContainer(GameSoundManager.Instance.audioSource); StopSoundConfigureAnimotion <AudioSourceGenericContainer, Transform> stopSoundConfigureAnimotion = new StopSoundConfigureAnimotion <AudioSourceGenericContainer, Transform>(audioContainer, 2); configurables.Add(stopSoundConfigureAnimotion); } } CombineMotion combineStopMotion = new CombineMotion(this, 1, motionsCombineSpawnStopMoveSquare, configurables); motionsCombineSpawnMoveSquare.Add(combineStopMotion); } else { CombineMotion combineStopMotion = new CombineMotion(this, 1, motionsCombineSpawnStopMoveSquare); motionsCombineSpawnMoveSquare.Add(combineStopMotion); } CombineMotion combinSquarePositionMotion = new CombineMotion(this, 1, motionsCombineSpawnMoveSquare); motionsSpawnCombine.Add(combinSquarePositionMotion); } } CombineMotion repositionInSquareMotion = new CombineMotion(this, 1, motionsSpawnCombine); return(repositionInSquareMotion); }
public Motion NormalSpawn(Vector3 tileObjectRealWorldLocation, GameObject goKimbok) { List <Motion> motionsSpawn = new List <Motion>(); List <Configurable> configureAnimotion = new List <Configurable>(); // POSICION INICIAL Y FINAL DE LA GRUA PARA TWEENEAR Vector3 craneStartPosition; Vector3 craneEndPostion; //B TWEEN DESDE UNA POSICION ELEVADA SOBRE LA TILE DONDE SE INDICO SPAWNEAR HASTA MAS ABAJO ASI SE VE DESDE ARRIBA EN EL TABLERO SOBRE LA TILE craneStartPosition = new Vector3(tileObjectRealWorldLocation.x, craneStartPositionY, 0); ConfigurePositionAssistant cnfPosAssist = new ConfigurePositionAssistant(craneStartPosition); TransformPositioConfigureAnimotion <Transform, ConfigurePositionAssistant> CranePositionConfigAnimotion = new TransformPositioConfigureAnimotion <Transform, ConfigurePositionAssistant>(Crane.transform, cnfPosAssist, 0, true); configureAnimotion.Add(CranePositionConfigAnimotion); craneEndPostion = new Vector3(tileObjectRealWorldLocation.x, Helper.GetCameraTopBorderYWorldPostion().y); //A CRANE//GRUA SET ACTIVE = TRUE // INSTANCIAMOS KIMBOKO SET ACTIVE FALSE Crane.SetActive(true); goKimbok.transform.position = CraneEnd.position; // ACTIVAMOS AL KIMBOKO SINO NO PUEDE OBTENER EL CURRENT ANIMATOR STATE INFO goKimbok.SetActive(true); // TWEEN DE LA CRANE A LA POSICION DE SPAWNEO Motion motionTweenMove = new MoveTweenMotion(this, Crane.transform, 1, craneEndPostion, craneTweenSpeedVelocity); motionsSpawn.Add(motionTweenMove); ////C ANIMATION CRANESPAWNING Motion motionCraneSpawn = new SpawnMotion(this, craneAnimator, 2); motionsSpawn.Add(motionCraneSpawn); if (GameSoundManager.Instance != null) { if (GameSoundManager.Instance.audioSource != null) { Motion motionSpawnSound = new SoundMotion(this, 2, GameSoundManager.Instance.audioSource, GameSoundManager.Instance.audioClips[3], false); motionsSpawn.Add(motionSpawnSound); } } KimbokoPositioConfigureAnimotion <Transform, Transform> KimbokoPositionConfigAnimotion = new KimbokoPositioConfigureAnimotion <Transform, Transform>(goKimbok.transform, CraneEnd, 3); configureAnimotion.Add(KimbokoPositionConfigAnimotion); SetActiveConfigureAnimotion <Transform, Transform> KimbokoActiveConfigAnimotion = new SetActiveConfigureAnimotion <Transform, Transform>(goKimbok.transform, 3); configureAnimotion.Add(KimbokoActiveConfigAnimotion); ////E TWEEN DESDE LA PUNTA DEL CRANE HASTA EL PISO, DE LA MISMA DURACION QUE LA ANIMACION DE SPAWN Motion motionKimbokoTweenMove = new MoveTweenMotion(this, goKimbok.transform, 4, tileObjectRealWorldLocation, kimbokoTweenSpeedVelocity); motionsSpawn.Add(motionKimbokoTweenMove); //G TWEEN DE LA CRANE PARA QUE SALGA DEL MAPA Motion motionTweenBackCraneMove = new MoveTweenMotion(this, Crane.transform, 5, craneStartPosition, craneTweenSpeedVelocity); motionsSpawn.Add(motionTweenBackCraneMove); // FINISH // KimbokoIdlleConfigureAnimotion <Animator, Transform> kimbokoIdlleConfigureAnimotion = new KimbokoIdlleConfigureAnimotion <Animator, Transform>(goKimbok.GetComponent <Animator>(), 6); configureAnimotion.Add(kimbokoIdlleConfigureAnimotion); KimbokoIdlleConfigureAnimotion <Animator, Transform> craneIdlleConfigureAnimotion = new KimbokoIdlleConfigureAnimotion <Animator, Transform>(craneAnimator, 6); configureAnimotion.Add(craneIdlleConfigureAnimotion); CombineMotion spawnMotion = new CombineMotion(this, 1, motionsSpawn, configureAnimotion); // LO DESACTIVO PARA QUE NO MOLESTE EN ESCENA ANTES DE "SPAWNEARSE" goKimbok.SetActive(false); return(spawnMotion); }