查看: 1075|回复: 2
打印 上一主题 下一主题

[其他] 拋物線实例(转载)

[复制链接]

711

主题

10

听众

5805

积分

高级设计师

Rank: 6Rank: 6

纳金币
2954
精华
3

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2014-4-30 02:56:46 |只看该作者 |倒序浏览
最近研究拋物線的東西~~簡單的寫了一些範例跟大家分享一下
將專案包起來放在以下路徑~!請用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. }
复制代码
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

hyui    

1

主题

2

听众

6671

积分

高级设计师

Rank: 6Rank: 6

纳金币
2715
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2014-4-30 03:57:09 |只看该作者
Thank you for sharing! ) ) )
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-14 02:15 , Processed in 0.150667 second(s), 27 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部