Beispiel #1
0
    protected override void Awake()
    {
        base.Awake();

        R        = Body.GetComponent <Rigidbody>();
        BodyColl = Body.Find("BodyColl").GetComponent <CapsuleCollider>();

        CamPivot       = transform.Find("CamPivot");
        CamSecondPivot = CamPivot.Find("CamSecondPivot");
        CamArm         = CamSecondPivot.Find("CamArm");
        AnimPivot      = CamArm.Find("AnimPivot");
        Cam_t          = AnimPivot.Find("Camera");
        Cam            = Cam_t.GetComponent <Camera>();


        LockArrow = transform.Find("LockArrowCanvas");

        CC = GetComponent <p_CameraController>();
        MC = GetComponent <p_MovementController>();
        AC = GetComponent <p_AttackController>();
        IC = GetComponent <p_InteractionController>();
        V  = GetComponent <p_Visual>();
        PB = (p_PlayerBeing)LB;

        C = GetComponent <p_Controller>();
    }
Beispiel #2
0
    protected void LockedEnemyRotationHandler()
    {
        Vector3    targetPoint = EnemyLocked.Body.position;
        Quaternion oRot        = CamPivot.rotation;

        CamPivot.LookAt(targetPoint.SetY(CamPivot.position.y) + Visual.right * -lockLeftOffset);

        CamPivot.rotation = Quaternion.Lerp(oRot, CamPivot.rotation, lockLerpSpeed * Utilities.Delta);

        oRot = CamSecondPivot.rotation;
        CamSecondPivot.LookAt(targetPoint + Visual.right * -lockLeftOffset + EnemyLocked.transform.up * 1f);

        CamSecondPivot.rotation         = Quaternion.Lerp(oRot, CamSecondPivot.rotation, lockLerpSpeed * Utilities.Delta);
        CamSecondPivot.localEulerAngles = CamSecondPivot.localEulerAngles.SetY(0).SetZ(0);

        float camLocalEulerX = CamSecondPivot.localEulerAngles.x;

        if (camLocalEulerX > 180)
        {
            camLocalEulerX -= 360;
        }

        eulerRot.x = Utilities.Limit(camLocalEulerX, yNegativeRotLimit, yPositiveRotLimit, false);
        eulerRot.y = Utilities.Limit(CamPivot.localEulerAngles.y, 0f, 360f, true);
    }
    void ActualizeState()
    {
        if (Dashing && (movementState & (e_MovementState.DashingBackward | e_MovementState.DashingForward | e_MovementState.DashingRight | e_MovementState.DashingLeft)) == 0)
        {
            Vector3 vector = CamPivot.InverseTransformDirection(MoveDirection);

            if (vector.z >= Mathf.Abs(vector.x))
            {
                movementState = e_MovementState.DashingForward;
            }
            else if (vector.z <= -Mathf.Abs(vector.x))
            {
                movementState = e_MovementState.DashingBackward;
            }
            else if (vector.x > Mathf.Abs(vector.z))
            {
                movementState = e_MovementState.DashingRight;
            }
            else
            {
                movementState = e_MovementState.DashingLeft;
            }
        }
        else if (Grounded)
        {
            if (moveVector.sqrMagnitude == 0)
            {
                movementState = e_MovementState.Standing;
            }
            else if (moveInput.y >= Mathf.Abs(moveInput.x))
            {
                movementState = Sprinting ? e_MovementState.SprintingForward : moveInput.sqrMagnitude < 1f ? e_MovementState.WalkForward : e_MovementState.RunForward;
            }
            else if (moveInput.y <= -Mathf.Abs(moveInput.x))
            {
                movementState = Sprinting ? e_MovementState.SprintingBackward : moveInput.sqrMagnitude < 1f ? e_MovementState.WalkBackward : e_MovementState.RunBackward;
            }
            else if (moveInput.x > Mathf.Abs(moveInput.y))
            {
                movementState = Sprinting ? e_MovementState.SprintingRight : moveInput.sqrMagnitude < 1f ? e_MovementState.WalkRight : e_MovementState.RunRight;
            }
            else
            {
                movementState = Sprinting ? e_MovementState.SprintingLeft : moveInput.sqrMagnitude < 1f ? e_MovementState.WalkLeft : e_MovementState.RunLeft;
            }
        }
        else
        {
            movementState = e_MovementState.InAir;
        }
    }
Beispiel #4
0
    /// <summary>
    /// Board를 초기화합니다.
    /// </summary>
    /// <param name="gsm">스테이지의 상태를 검사하는 GameStageManager를 매개변수로 받습니다.</param>
    public void InitializeBoard(GameStageManager gsm)
    {
        // 게임 매니저를 할당합니다.
        gameStageMgr = gsm;
        // 비활성화된 Piece을 저장합니다.
        disabledPieces = new Queue <Piece>();
        // 매치된 Piece을 저장합니다.
        matchedPieces = new List <Piece>();
        // 매치된 Piece 중 검사한 Piece을 저장합니다.
        verifiedPieces = new List <Piece>();
        // 힌트로 표시된 Piece을 저장합니다.
        hintPieces = new List <Piece>();

        // 스테이지의 정보를 가져옵니다.
        stageData = GameManager.Instance.GetStageDataWithLevel(StaticVariables.LoadLevel);

        // 스테이지의 저장된 Piece 색깔 이미지를 저장합니다.
        pieceSprites = stageData.pieceSprites;
        // 스테이지에 저장된 Piece 아이템 이미지를 저장합니다.
        itemSprites = stageData.itemSprites;

        // Board의 세로 크기
        vertical = stageData.vertical;
        // Board의 가로 크기
        horizontal = stageData.horizontal;

        // 블럭을 Board 크기만큼 배열 크기를 정합니다.
        tiles = new Tile[horizontal, vertical];

        // 카메라에 붙은 스크립트를 가져옵니다.
        camPivot = Camera.main.GetComponent <CamPivot>();
        // 카메라의 위치를 크기에 비례해서 정합니다.
        camPivot.SetCameraPivot(horizontal, vertical, stageData.camPivotX, stageData.camPivotY, stageData.camPivotSize);

        // Board에 Tile을 생성합니다.
        CreateBackgroundTile();
        // Board에 Breakable Tile을 생성합니다.
        CreateBreakableTile();
        // Board에 생성된 Tile에 Piece를 생성합니다.
        CreatePiece();
    }
    void DirectionAndStatesOperationsHandler()
    {
        moveInput = C.MoveInput;

        if (Grounded && AttackState == p_AttackController.e_AttackState.None && movementState != e_MovementState.Climbing)
        {
            if (EnemyLocked)
            {
                if ((movementState & (e_MovementState.WalkForward | e_MovementState.SprintingForward | e_MovementState.RunForward)) != 0 && (C.Sprint || Sprinting))
                {
                    Sprinting = true;
                }
                else
                {
                    Sprinting = false;
                }
            }
            else
            {
                Sprinting = C.Sprint || Sprinting;
            }
        }
        else
        {
            Sprinting = false;
        }

        if (Sprinting)
        {
            if (moveInput.sqrMagnitude > 0.25f)//magnitude > 0.5f
            {
                moveInput.Normalize();
            }
            else
            {
                Sprinting = false;
            }
        }

        if (Dashing)
        {
            return;
        }

        if (moveInput.sqrMagnitude != 0)
        {
            if (moveInput.sqrMagnitude < 0.25f)
            {
                moveInput = moveInput.normalized * 0.5f;
            }
            else
            {
                moveInput.Normalize();
            }

            moveVector = CamPivot.TransformVector(moveInput.ToXZ());

            MoveDirection = moveVector.normalized;
        }
        else
        {
            MoveDirection = Visual.forward;
        }

        MoveInput = moveInput;
    }
Beispiel #6
0
 protected void LateUpdate()
 {
     CamPivot.position = CamPivot.TransformVector(offset) + Visual.position;
 }