示例#1
0
 public virtual void Update()
 {
     if (trav.enabled)
     {
         if (shouldFetchRotation)
         {
             transform.rotation = Quaternion.FromToRotation(Vector3.up, trav.GetCurrentHeading().normalized);
         }
     }
 }
示例#2
0
        private void PlayerControlledMakeClosestTo()
        {
            Vector3 desiredPos = GetStartingPosition();
            Vector3 inputDir = Vector3.zero, inputDirRaw;

            inputDirRaw = new Vector3(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"), 0);

            inputDir += inputDirRaw * Time.deltaTime * speed;

            //print(inputDir);

            if (Input.GetMouseButtonDown(0))
            {
                prevMousePos = Camera.main.ScreenToViewportPoint(Input.mousePosition);
            }

            if (Input.GetMouseButton(0))
            {
                Vector3 curInput = Camera.main.ScreenToViewportPoint(Input.mousePosition);
                Vector3 inputDif = (curInput - prevMousePos) * dragScale;
                inputDir += inputDif;
                //print (inputDif);
                prevMousePos = curInput;
            }

            //constraint and readjust inputDir
            Vector3 splineDir = Vector3.up;

            if (trav != null && splineJunctions.Count < 1 && !Mathf.Approximately(0.0f, inputDirRaw.magnitude))
            {
                splineDir = trav.GetCurrentHeading();
                splineDir.Normalize();

                float dot = Vector3.Dot(splineDir, inputDir.normalized);
                float dir = dot > 0 ? 1 : -1;

                inputDir = splineDir * dir * Time.deltaTime * speed;
            }//inputDif.Normalize();

            desiredPos += inputDir;


            MakeClosestTo(desiredPos);
        }