コード例 #1
0
ファイル: ActionCamera.cs プロジェクト: KooRae285/o0o
    // Update is called once per frame
    void Update()
    {
        switch (_stateAction)
        {
        case eStateCameraAct.none:
            _timeCheck += Time.deltaTime;
            if (_timeCheck >= 2)
            {
                _stateAction = eStateCameraAct.WALKKING;
            }
            break;

        case eStateCameraAct.WALKKING:
            if (Vector3.Distance(transform.position, _ltPositions[_nextCameraPos]) <= 0.05f)
            {
                //Debug.Log("하하");
                _currentIndex  = _nextCameraPos;
                _nextCameraPos = _currentIndex + 1;
                if (_nextCameraPos >= _ltPositions.Count)
                {
                    _nextCameraPos = _currentIndex;
                    _stateAction   = eStateCameraAct.CHANGE_FOLLOW;
                    Player         = GameObject.FindGameObjectWithTag("Player").transform;
                    _lookPos       = GameObject.FindGameObjectWithTag("LookPos").transform;
                }
            }
            transform.position = Vector3.MoveTowards(transform.position, _ltPositions[_nextCameraPos], Time.deltaTime * _movSpeed);
            transform.LookAt(_tfRootPos);
            break;

        case eStateCameraAct.CHANGE_FOLLOW:
            Vector3    tp = (Player.transform.position) + _followOffset;
            Quaternion tq = Quaternion.LookRotation(_lookPos.position - tp);
            transform.position = Vector3.Slerp(transform.position, tp, Time.deltaTime);
            transform.rotation = Quaternion.Slerp(transform.rotation, tq, Time.deltaTime);
            //transform.LookAt(_lookPos);
            if (Vector3.Distance(transform.position, tp) <= 0.3f)
            {
                transform.position = tp;
                transform.LookAt(_lookPos);
                _stateAction = eStateCameraAct.WAIT;
                InGameManager._instance.GameStart();
            }
            break;

        case eStateCameraAct.FOLLOW:
            float      currAngleY = Mathf.LerpAngle(transform.eulerAngles.y, Player.eulerAngles.y, Time.deltaTime * 5);
            Quaternion rot        = Quaternion.Euler(0, currAngleY, 0);
            _posGoal           = Player.position - (rot * Vector3.forward * _followOffset.z) + (Vector3.up * _followOffset.y);
            transform.position = _posGoal;   //Vector3.MoveTowards(transform.position, _posGoal, Time.deltaTime*5);
            transform.LookAt(_lookPos);
            break;
        }
    }
コード例 #2
0
ファイル: ActionCamera.cs プロジェクト: KooRae285/o0o
 public void SetCameraActionPosRoot(Transform tr)
 {
     _currentIndex = 0;
     _tfRootPos    = tr;
     for (int n = 0; n < _tfRootPos.childCount; n++)
     {
         _ltPositions.Add(_tfRootPos.GetChild(n).position);
     }
     transform.position = _ltPositions[_currentIndex];
     transform.LookAt(_tfRootPos);
     _nextCameraPos = _currentIndex + 1;
     _stateAction   = eStateCameraAct.none;
 }