Ejemplo n.º 1
0
        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()}");
                }
            }
        }
Ejemplo n.º 2
0
    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);
    }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
 private void FixedUpdate()
 {
     MovementManger.SnapToGrid(transform.parent.transform, GameTower, Tower.CharacterLayer);
 }