private void Start() { MovementManger.SnapToGrid(transform, GameTower, Tower.CharacterLayer); playerLayer = LayerMask.NameToLayer("Player"); if (Direction != MoveDir.NONE) { if (PointA != null && PointB != null) { target = (InverseStart) ? PointB : PointA; approcheRadius = transform.localScale.x / 2; switch (Direction) { case MoveDir.HORIZONTAL: PointA.position = new Vector3(PointA.position.x, transform.position.y, PointA.position.z); PointB.position = new Vector3(PointB.position.x, transform.position.y, PointB.position.z); MovementManger.SnapToGrid(PointA, GameTower, Tower.CharacterLayer); MovementManger.SnapToGrid(PointB, GameTower, Tower.CharacterLayer); break; case MoveDir.VERTICAL: PointA.position = new Vector3(transform.position.x, PointA.position.y, transform.position.z); PointB.position = new Vector3(transform.position.x, PointB.position.y, transform.position.z); MovementManger.SnapToGrid(PointA, GameTower, Tower.CharacterLayer); MovementManger.SnapToGrid(PointB, GameTower, Tower.CharacterLayer); break; case MoveDir.FREE: MovementManger.SnapToGrid(PointA, GameTower, Tower.CharacterLayer); MovementManger.SnapToGrid(PointB, GameTower, Tower.CharacterLayer); break; } } else { Debug.LogError($"Please add the Target Points A & B to the {this.GetType().ToString()}"); } } }
private void Movement() { var h = -_joyManager.GetAxis(JoystickAxis.HORIZONTAL); var v = -_joyManager.GetAxis(JoystickAxis.VERTICAL); IsHolding = _joyManager.CheckButton(JoystickButton.B, Input.GetButton) && CanHold; if (!IsHolding) { currentSpeed = Mathf.SmoothDamp(currentSpeed, WalkSpeed, ref speedSmothvelocity, SPEED_SMOTH_TIME); MovementManger.NextPosition(transform, h, currentSpeed, TowerObject, Tower.CharacterLayer, ref lookDir, PlayerLookOffset); bool isAboveMid = false; if (IsAnchord) { isAboveMid = Anchor.position.y < (transform.position.y + Rope.offsetY); } else { isAboveMid = Rope.transform.position.y < (transform.position.y + Rope.offsetY); } if (!characterController.isGrounded && IsAnchord && !isAboveMid || !characterController.isGrounded && Rope.IsOtherHolding(PlayerNumber) && !isAboveMid) { velocityY = Mathf.Clamp(velocityY - Gravity * Time.fixedDeltaTime, MinV, MaxV); velocityY = Mathf.Clamp(velocityY + v * UpForce * Time.fixedDeltaTime, MinV, MaxV); } else { velocityY -= Gravity * Time.fixedDeltaTime; } characterController.Move(new Vector3(0, velocityY, 0) * Time.fixedDeltaTime); } if (characterController.isGrounded || IsHolding) { velocityY = 0; } UpdateAnimator(Mathf.Abs(h), characterController.isGrounded); }
private void SteerToTarget() { var desiredVelocity = target.position - transform.position; var distance = desiredVelocity.magnitude; if (distance < TARGET_DISTANCE) { SwitchTarget(); return; } if (distance < approcheRadius) { desiredVelocity = desiredVelocity.normalized * MovementSpeed * (distance / approcheRadius); } else { desiredVelocity = desiredVelocity.normalized * MovementSpeed; } transform.position += desiredVelocity * Time.fixedDeltaTime; MovementManger.SnapToGrid(transform, GameTower, Tower.CharacterLayer); }
private void FixedUpdate() { MovementManger.SnapToGrid(transform.parent.transform, GameTower, Tower.CharacterLayer); }