Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by Sylon87 · Oct 01, 2018 at 01:44 PM · c#scriptingbasicsmathcurvecurves

how to use t variable in the bazier curve

hello.

i'm doing a practice with bazier curve, by folow a tutorial i was able to get a cruved linerenderer, but what i want to do is to move an object by a curve, and here's the point.. how to do it, is fine to just put Time.deltatime as t variable?

this is the script

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class Bezier : MonoBehaviour 
 {
     [SerializeField]
     private LineRenderer lineRenderer;
     [SerializeField]
     private Transform point0,point1,point2;
     private Vector3[] positions = new Vector3[50];
     private int numOfPoints = 50;
 
     // Use this for initialization
     void Start () 
     {
         lineRenderer.positionCount = numOfPoints;
     }
     
     // Update is called once per frame
     void Update () 
     {    
         //DrawLinearCurve();
         DrawQuadraticBazierCurve();
     }
 
     private void DrawQuadraticBazierCurve()
     {
         for (int i = 1; i <= numOfPoints; i++)
         {
             float t = i / (float) numOfPoints;
             positions[ i - 1] = CalculateQuadraticBezierPoint(t,point0.position,point1.position,point2.position);
         }
         lineRenderer.SetPositions(positions);
     }
 
     /*private Vector3 CalculateLinearBezierPoint (float t, Vector3 p0, Vector3 p1)
     {
         return p0 + t * (p1 - p0);
         // P = P0 + t ( P1 - P0 )
     }*/
     private Vector3 CalculateQuadraticBezierPoint (float t, Vector3 p0, Vector3 p1, Vector3 p2)
     {
         float u = 1 - t;
         float tt = t * t;
         float uu = u * u;
         Vector3 p = uu * p0;
         p += 2 * u * t * p1;
         p += tt * p2;
         return p;
         // B(t) = (1-t)2P0 + 2(1-t)tP1 + t2P2 
     }
 
 }
Comment
Add comment · Show 1
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image rainChu · Oct 02, 2018 at 12:16 AM 0
Share

Not an answer, but I do want to gently correct you- it's spelled with an e, "bezier" and you pronounce it like this: https://howjsay.com/search?word=bezier LCStark has a good answer, so good luck with your learning!

2 Replies

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by LCStark · Oct 01, 2018 at 03:40 PM

After you generate the Bezier curve (which you only have to do once - you don't need to do that every frame) you have an Vector3 array with positions of points on that curve. The object you want to move along that curve has to have access to those points and has to know how many points there are. Whether you do that by changing their accessors to public or by provinding public methods to retrieve them is up to you.

All you need to do is make your object move towards each of these points, one by one. Have a field that stores the current point index and the position of your current target:

int currentPointIndex;
Vector3 currentTargetPosition;

In your object's Update function you can simply MoveTowards your current target position. If you reach that position, you simply increment the index and get the next point position. You'd also want to add a check if there are any more points, or if you've already gone through the entire curve:

transform.position = Vector3.MoveTowards(transform.position, currentTargetPosition, speed * Time.deltaTime);
if (transform.position == currentTargetPosition) {
    currentPointIndex++;
    if (currentPointIndex > numOfPoints - 1) {
        Debug.Log("Done!");
    }
}
Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Sylon87 · Oct 01, 2018 at 10:41 PM 0
Share

actually I should do all of this in the calculate quadratic bazier methods?

avatar image
0

Answer by Sylon87 · Oct 02, 2018 at 07:06 AM

Well i did it. But player doesn’t rotate with curve..

Comment
Add comment · Show 3 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image rainChu · Oct 02, 2018 at 08:32 PM 0
Share

The player isn't supposed to, you have to code that manually. Here's what you should do: Take the old position, take the new position, and create a quaternion that represents a "look at" angle from the old to the new. Then, assign that rotation to the player. Here's one way you could do this:

 transform.rotation = Quaternion.LookRotation( transform.position - oldPosition )

To get this oldPosition variable, just assign the transform.position to it before the move.

avatar image Bunny83 rainChu · Oct 02, 2018 at 11:50 PM 0
Share

Actually using the direction from old to current position is not really exact. It may work for small enough steps. If you want to know the direction / tangent of a bezier curve, just use the first derivative. It gives you the tangent for the same given "t" and control point values.

 private Vector3 CalculateQuadraticBezierTangent(float t, Vector3 p0, Vector3 p1, Vector3 p2)
 {
     float u = 1f - t;
     return 3*(u*u*(p1 - p0) + 2*u*t*(p2 - p1) + t*t*(p3 - p2));
 }


avatar image rainChu Bunny83 · Oct 02, 2018 at 11:53 PM 0
Share

Thanks, I'll remember this.

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

557 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

moving forward after bazier curve 1 Answer

Multiple Cars not working 1 Answer

witch approach for an car race curve 1 Answer

How to get lateral normals of a bezier curve 1 Answer

Text along a curve 2 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges