public void Move(PlatformPosition platformPosition, float timeMultiplier = 1f, bool snap = false, bool reset = false) { CurrentPlatformPosition = platformPosition; if (reset) { for (var i = 0; i < Blocks.Count; i++) { Blocks[i].position = Vector3.zero; } } for (var i = 0; i < Blocks.Count; i++) { Vector3 posMultiplier; if (platformPosition == PlatformPosition.Up) { posMultiplier = new Vector3(0, BlocksPos[i], 0); } else { posMultiplier = new Vector3(0, -BlocksPos[i], 0); } var newPos = Blocks[i].position + posMultiplier; if (snap) { Blocks[i].position = newPos; } else { LeanTween.move(Blocks[i].gameObject, newPos, BlocksTime[i] * timeMultiplier).setEase((LeanTweenType)BlocksEase[i]); } } GenerateRandomMovement(); }
public void UpdateState(PlatformPosition update) { var position = transform.position; var distance = Vector3.Distance(position, update.Position.center); var direction = position.x - update.Position.center.x > 0; // > 0 - right | < 0 -left if (state == State.Rising || state == State.Falling || state == State.IdleUp || state == State.MovingLeft || state == State.MovingRight || movementLocker) { return; } var yDiff = Mathf.Abs(transform.position.y - update.Position.center.y); if (distance < 3.4f && distance > 2.5f && yDiff < .4f) { if (BossFightManager.BossSide == BossSide.Right) { if (direction) { movementLocker = true; StartCoroutine(Move(update.Position.center, true)); } } if (BossFightManager.BossSide == BossSide.Left) { if (!direction) { movementLocker = true; StartCoroutine(Move(update.Position.center, false)); } } } }
public void GoToNextPosition() { this.transform.position = m_nextPosition.transform.position; m_nextPosition = m_nextPosition.GetNextPosition(); }