纳金网

标题: 拋物線实例(转载) [打印本页]

作者: 刀锋狼    时间: 2014-4-30 02:56
标题: 拋物線实例(转载)
最近研究拋物線的東西~~簡單的寫了一些範例跟大家分享一下
將專案包起來放在以下路徑~!請用4.3或以上版本開
http://pan.baidu.com/s/1qW4Q9mW

RunRun2 是拋物線動畫
RunLine 是拋物線軌跡!
我是分開2個檔
主要函式是用
Ax^2 + bx + c來實作的
大家可以修改一下程式中的a,b,c變數跑起來會有不一樣的效果~~
因為是測試用寫了很簡單~~請大家不要見怪阿!!~~
以下是Code
  1. using UnityEngine;
  2. using System.Collections;

  3. public class RunLine : MonoBehaviour {
  4.     float a = -0.02f;//負數缺口向下正的缺口向上
  5.     float b = 0;
  6.     float c = 100;//頂點會偏移改變;
  7.     public GameObject gg;
  8.         // Use this for initialization
  9.         void Start () {
  10.        //拋物線點
  11.         for (int x = -50; x <= 50; x++)
  12.         {
  13.             Vector3 v3 = test(x);
  14.             Debug.Log(v3);
  15.             Instantiate(gg,v3,Quaternion.identity);
  16.         }
  17.         }

  18.     public Vector3 test(float x)
  19.     {
  20.         float y = a * (x * x) + b * x + c;
  21.         Vector3 v2 = new Vector3(x, y, 0);

  22.         return v2;
  23.     }
  24.         // Update is called once per frame
  25.         void Update () {

  26.         

  27.          
  28.          
  29.         }
  30. }
复制代码
  1. using UnityEngine;
  2. using System.Collections;

  3. public class RunRun2 : MonoBehaviour {
  4.     //拋物線動畫
  5.         // Use this for initialization
  6.     float a = -0.02f;
  7.     float b = 0;
  8.     float c = 100;//頂點會偏移改變
  9.     public GameObject gg;
  10.     Vector3 vectorEnd = new Vector3(100, 0, 0);
  11.     float beforVector1;
  12.     float time = 0;
  13.     // Use this for initialization
  14.     void Start()
  15.     {
  16.         beforVector1 = this.transform.position.x;

  17.     }

  18.     public Vector3 test(float x)
  19.     {
  20.         float y = a * (x * x) + b * x + c;
  21.         Vector3 v2 = new Vector3(x, y, 0);

  22.         return v2;
  23.     }


  24.     // Update is called once per frame
  25.     void Update()
  26.     {

  27.         if (transform.position.x <= 50)
  28.         {
  29.             Vector3 vector3 = Vector3.right * (50 * Time.deltaTime * 0.5f);
  30.             time += Time.deltaTime;
  31.             Vector3 tmpV3 = transform.position + vector3;
  32.             //transform.position += vector3;
  33.             transform.position = test(tmpV3.x);
  34.             float afterVector1 = this.transform.position.x - beforVector1;
  35.             Debug.Log(time + ":" + afterVector1);
  36.         }
  37.          


  38.     }
  39. }
复制代码

作者: hyui    时间: 2014-4-30 03:57
Thank you for sharing! ) ) )




欢迎光临 纳金网 (http://course.narkii.com/club/) Powered by Discuz! X2.5