private void StartHammering() { hammerDirection = slamDirection; propelTimer = Utility.StartTimer(timeBeforePropelling); hammerState = HammerSteps.GOING; SoundManager._instance.PlaySound(SoundManager.SoundList.HAND_MOVEMENT); CmdStartHammering(slamDirection); }
private void RpcStartHammering(Vector2 argSlamDirection) { if (!isLocalPlayer) { hammerDirection = argSlamDirection; oldSlamDirection = argSlamDirection; propelTimer = Utility.StartTimer(timeBeforePropelling); hammerState = HammerSteps.GOING; } }
public void SetupStart() { hammerState = HammerSteps.IDLE; jump = false; rigid = GetComponent <Rigidbody2D>(); sprite = GetComponent <SpriteRenderer>(); UpdateSpawnPosition(); if (isLocalPlayer) { Camera.main.GetComponent <CameraBehavior>().player = gameObject; GameManager._instance.localPlayer = this; } flag = null; OnChangeName(playerName); OnChangeTeam(playerTeam); OnChangeSkin(playerSkin); }
private void HammerSlam() { switch (hammerState) { case HammerSteps.GOING: if (Utility.IsOver(propelTimer)) { hammerState = HammerSteps.SLAMMING; } else { float dist = hammerCurve.Evaluate(1 - (Utility.GetTimerRemainingTime(propelTimer) / timeBeforePropelling)); propellingObj.transform.localPosition = hammerDirection * dist; } break; case HammerSteps.SLAMMING: hammerState = HammerSteps.RETURNING; if (isServer) { List <GameObject> players = propellingObj.GetComponent <PropellingBehavior>().GetTouchingPlayers(); // To propell the player a bit in height. if (Mathf.Approximately(hammerDirection.y, 0.0f)) { hammerDirection.y = 0.3f; } // Propell all the players touched foreach (GameObject player in players) { player.GetComponent <LocalPlayerController>().CmdGetHit(hammerDirection * force); } } propelTimer = Utility.StartTimer(timeBeforePropelling); break; case HammerSteps.RETURNING: if (Utility.IsOver(propelTimer)) { hammerState = HammerSteps.IDLE; } else { float dist = hammerCurve.Evaluate(Utility.GetTimerRemainingTime(propelTimer) / timeBeforePropelling); propellingObj.transform.localPosition = hammerDirection * dist; } break; case HammerSteps.IDLE: propellingObj.transform.localPosition = new Vector2(0.0f, 0.0f); break; } if (isLocalPlayer && hammerState != HammerSteps.IDLE) { if (oldSlamDirection != slamDirection) { CmdUpdateHammerSlam(slamDirection); oldSlamDirection = slamDirection; } } }