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>(); }
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; } }
/// <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; }
protected void LateUpdate() { CamPivot.position = CamPivot.TransformVector(offset) + Visual.position; }