public virtual void Update() { if (trav.enabled) { if (shouldFetchRotation) { transform.rotation = Quaternion.FromToRotation(Vector3.up, trav.GetCurrentHeading().normalized); } } }
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); }