// Update is called once per frame void Update() { float horizontal = Input.GetAxis("Horizontal") * horizontalOffsetStrength; horizontal = Mathf.Clamp(horizontal, -horizontalOffsetClamp, horizontalOffsetClamp); curveDist = curvePlayer.position2D.x + horizontal; Vector3 targetPos = curvePath.GetPointAtDistance(ref curveDist, 0); transform.position = Vector3.SmoothDamp(transform.position, targetPos, ref refPos, FollowSpeed); Quaternion toRot = curvePath.GetRotationAtDistance(ref curveDist, 0); transform.rotation = Quaternion.Slerp(transform.rotation, Target.rotation, RotateSpeed * Time.deltaTime); }
private void FixedUpdate() { position2D.x += horizontal * speed * Time.deltaTime; if (position2D.x < 0) { position2D.x = 0; } //Vector2 force = ComputeGravity(); //Vector2 acceleration = new Vector2(force.x / mass, force.y / mass); //velocity2D.y += acceleration.y * Time.deltaTime; //if (jump) { velocity2D.y = jumpForce / mass; jump = false; grounded = false; } if (jump) { rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse); } position2D.y += velocity2D.y * Time.deltaTime; if (position2D.y < .5f) { position2D.y = .5f; velocity2D.y = 0; grounded = true; } mAnimator.SetFloat("Y_Velocity", velocity2D.y); transform.rotation = curve.GetRotationAtDistance(ref position2D.x, currentPathIndex); transform.right = new Vector3(transform.right.x, 0, transform.right.z); position3D = curve.GetPointAtDistance(ref position2D.x, currentPathIndex); float yDiff = position3D.y - lastCurvePosY; position2D.y -= yDiff; //transform.position = position3D + transform.up * position2D.y; lastCurvePosY = position3D.y; }