void PokeBehaviour() { if (currentPhase != Phases.Poke) { return; } if (firstPosition == Vector3.zero) { firstPosition = transform.position; } switch (phaseState) { case phaseStates.Charge: sprite.sprite = chargeSprite; if (startDirection == Vector3.zero) { startDirection = (transform.position - player.transform.position).normalized; float blendModule = UnityEngine.Random.Range(0f, 1f); if (isRight) { startDirection = ((new Vector3(-startDirection.y, startDirection.x) * blendModule) + (startDirection * (1 - blendModule))).normalized; } else { startDirection = ((new Vector3(startDirection.y, -startDirection.x) * blendModule) + (startDirection * (1 - blendModule))).normalized; } startDirection *= pokeDistance / 2; } transform.right = Vector3.Lerp(transform.right, (player.transform.position - transform.position) * (1 + -2 * Convert.ToInt32(!isRight)), rotationSpeed * Time.deltaTime * 100); startPosition = player.transform.position + player.swordOffset + startDirection; transform.position = Vector3.Lerp(firstPosition, startPosition, chargeMovement.Evaluate(elapsed / pokeChargeTime)); break; case phaseStates.Action: sprite.sprite = pokeSprite; if (pokePosition == Vector3.zero) { pokePosition = player.transform.position + player.swordOffset + (transform.position - player.transform.position).normalized * pokeDistance / -2; } transform.position = Vector3.Lerp(startPosition, pokePosition, pokeMovement.Evaluate(elapsed / pokeTime)); break; default: phaseState = phaseStates.Charge; break; } elapsed += Time.deltaTime; }
IEnumerator Clap() { currentPhase = Phases.Clap; for (int i = 0; i < clapAmount; i++) { firstPosition = Vector3.zero; startPosition = Vector3.zero; pokePosition = Vector3.zero; elapsed = 0; phaseState = phaseStates.Charge; yield return(new WaitForSeconds(clapChargeTime)); elapsed = 0; canAttack = true; phaseState = phaseStates.Action; yield return(new WaitForSeconds(clapTime)); canAttack = false; } DetermineNextPhase(); }
void ClapBehaviour() { if (currentPhase != Phases.Clap) { return; } if (firstPosition == Vector3.zero) { firstPosition = transform.position; } switch (phaseState) { case phaseStates.Charge: sprite.sprite = chargeSprite; transform.right = Vector3.Lerp(transform.right, (player.transform.position - transform.position) * (1 + -2 * Convert.ToInt32(!isRight)), rotationSpeed * Time.deltaTime * 100); startPosition = new Vector3(clapOffset.x - (clapOffset.x * 2 * Convert.ToInt32(isRight)), clapOffset.y); transform.position = Vector3.Lerp(firstPosition, startPosition, chargeMovement.Evaluate(elapsed / clapChargeTime)); break; case phaseStates.Action: sprite.sprite = clapSprite; //transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.identity, rotationSpeed * Time.deltaTime * 100); transform.up = Vector3.Lerp(transform.up, Vector3.up, rotationSpeed * Time.deltaTime * 100); if (pokePosition == Vector3.zero) { pokePosition = player.transform.position + player.swordOffset; } transform.position = new Vector3(Mathf.Lerp(startPosition.x, player.transform.position.x, ClapMovementX.Evaluate(elapsed / clapTime)), Mathf.Lerp(startPosition.y, pokePosition.y, ClapMovementY.Evaluate(elapsed / clapTime))); break; default: phaseState = phaseStates.Charge; break; } elapsed += Time.deltaTime; }