private void Awake() { if (ConstantSpeedTraversal) { // This must be called before calling any of the parametrization // evaluation methods! _splineLength = Spline.ParametrizeByArcLength(ParametrizationCount); _visualPoints = new PositionTangent[ParametrizationCount]; for (int i = 0; i < _visualPoints.Length; ++i) { _visualPoints[i] = Spline.EvalPositionTangentParametrized((float)i / (_visualPoints.Length - 1) * _splineLength); _visualPoints[i].Position = Spline.transform.TransformPoint(_visualPoints[i].Position); } } else { _visualPoints = new PositionTangent[ParametrizationCount]; for (int i = 0; i < _visualPoints.Length; ++i) { _visualPoints[i] = Spline.EvalPositionTangent((float)i / (_visualPoints.Length - 1)); _visualPoints[i].Position = Spline.transform.TransformPoint(_visualPoints[i].Position); } } }
/// <summary> /// 初始化好玩家预制体,同时并将位置点重置到初始点 /// </summary> public void LoadPlayer() { var obj = GameObject.Instantiate(mPlayer); obj.name = "Player"; PositionTangent data; mWay.EvalPositionTangentParametrized(0, out data); mPlayer.transform.position = data.Position; mPlayer.transform.forward = data.Tangent; curPlayerObj = obj; mPlayerScr = obj.GetComponent <Player>(); }