网站公告 | 全新unity3d 完整学习路线,最强课程配套、服务!详情点击
查看: 20281|回复: 64
收起左侧

[天之道] 【原创】抛物线原理之初体验

  [复制链接]

[天之道] 【原创】抛物线原理之初体验  [复制链接]

天之道 发表于 2015-5-26 17:31:16 [显示全部楼层] 回帖奖励 |倒序浏览 |阅读模式 回复:  64 浏览:  20281
本帖最后由 天之道 于 2015-5-26 17:49 编辑

抛物线原理之初体验
——DC老湿的私房菜 之 细说各种tween系列三(1)




在之前的系列二(1)里面,
提到过Asset Store itween插件由于文档详细且例子众多,拥护者广泛
(其实就是出来的比别人早,知名度接受度认可度广而已)
所以,当时我们大胆猜想了itween是所有tween的爸爸。(以下“所有”特指目前Unity主流的六大免费的tween插件)

既然,别的tween插件在性能方面上都会拿itween来作对比,以标榜自己有多高效~
那么,新手上路,就让我们来看看itween的第一个官方例子,Accurate Lob,如图1
图1

可以看到,小球从黑孔里发射出来,并沿着抛物线的轨迹到达目标位置,如图2
图2

我想,在这个Demo里,无论是Instantiate()小球实例化,还是瞄准点光标跟着鼠标移动等等,应该都是基础到不能再基础的技术,相信难不倒大家。
唯一的可能要绕一下的就是抛物线轨迹运动方面,你可能需要一些数学或者物理学方面的知识作为基础。


ok,说道运动轨迹。
也就正式进入到我们今天的主题——抛物线,如图3
图3

我个人认为,百度百科上对于这一段话的描述解释比wiki上的要好一点,
理由:依稀记得当年中学老师也是这么教的。从情感上来说,相当之亲切……


……
what?!DC老湿,你在说什么??
妹妹我当年是文科的/弟弟我当年数理化不及格,根本看不懂这段话所云为何~


好吧,那我们图文并茂一下,帮助大伙回忆回忆~,如图4~5


图4

图5

肿么样,红框标出的这几个应该再熟悉不过了吧,
还记得那个“△”叫 “蝶儿他”么~



……
what?!DC老湿,你在逗我么??
妹妹我当年数学课上只会偷偷传纸条
弟弟我当年游戏、小说独坐后排墙角,
这两幅图对学渣来说还是太深奥~


好吧,数学确实是一门高度抽象的学科,
对于一部分人来说,可能理解起来得心应手,
但对于另一部分人来说,似乎并不是那么容易理解。

没关系,不会就是不会,没有什么好羞耻的,每个人的生来天赋都不一样。
就好像《火影忍者》里的“李”,不会忍术也不会幻术,专修体术的他未来也一定会像其师傅“凯”一样成为一个伟大的忍者。

天生我材必有用,千金散尽还复来
(正如你花RMB看泰课的收费视频教程,短期来看是花出去一部分钱了,
你是有目的的学(知道自己缺什么,然后去补什么),从长远来讲,
这部分知识储备,
将来无论是在求职阶段作为要到高薪的砝码,
亦或是将来项目中运用所学解决实际问题,项目组赚钱了,你不仅得到了同行们的技术认可,还有可能升职加薪。
何乐而不为呢~

闲聊之后,继续我们的正题~

如果说数学里的抛物线是把自然现象抽象成几何学,加以研究推导,
那么物理学里的抛物线就是模拟自然现象,并分析证明。

既然抛物线从数学角度看比较吃力,那我们换从物理角度看,
一张图就能搞定,如图6

图6

如上图所示,这条抛物线是开口朝下的(废话,根据地心引力,开口不朝下还能朝哪儿)
这个斜抛运动可以拆分成两部分,分别为:
水平方向做匀速直线运动,
垂直方向做竖直上抛运动。


水平方向,很简单:距离(x = 速度(Vx * 时间(t

垂直方向,也不难:高度(y = 竖直向上的速度(Vy* 时间(t - 1/2 * 重力加速度(g)*时间(t)*时间(t)

肿么样,是不是先前那个看似无从下手的物理现象,拆分成这两部分后就一切都有迹可循了捏~


好的,说完原理,趁热打铁,开始实际操作一番,

需求:实现2D斜抛运动轨迹如图6 ~ 7
图6
图7


开发工具:
Unity5.0及其内置的UGUI
Visual Studio2013

素材资源:
网上随便找点贴图,凑合着用一下咯~


下面列出两张图来讲解下核心脚本部分,如图8~9
图8

g为重力加速度9.8,这个应该地球人都知道,
mTime给定飞行时间为2(当然可以在属性面板的里根据实际情况继续调整,实际情况下,我把其调整为了10,画出来的曲线才看上去比较正点),
时间给定,是为了计算 下面的两个对象值 V0x,V0y,
pointball、balls、pointNumber这三个对象是用来生成、保存、计算路径点用的,
lastTargetT为上一个目标位置,存在意义为在Update()函数每帧调用里,减少多余的计算
当前目标点位置CurrtargetT,
而launch_pad为当前发射点位置,

实现原理:鼠标点向屏幕发射射线,若遇到碰撞,则返回当前目标点位置,用目标点位置减发射点位置,得到水平以为,又总时间固定,则可求出水平方向初速速度,又通过公式得出垂直方向初速度,进而求出各个时间间隔点位置信息

图9


DoCaculate()方法,是用来计算V0x和V0y,并向DrawPath里传所需参数
(原理:是根据“距离(x) = 速度(V0x) * 时间(t)”,来计算V0x,而V0y之所以为“时间(t)*重力加速度(g)/2”,是由于当斜抛运动到达最高点时,Vy等于这一时刻的竖直向下的速度。)

DrawPath()方法,根据设定来计算间隔时间,并象征性的绘制路径点。


这样的,我们的抛物线路径轨迹就画出来了

完整脚本如下
游客,如果您要查看本帖隐藏内容请回复










后记
说到公式不得不说,无论是,(蝶儿他)Δ=b2-4ac,还是 极值点:(),亦或是物理公式
凭良心讲,怎么说都比我在《【DC分享】Unity5.0官方3D场景Demo 《Viking Village》 For Physically Based Shading》里提到的全局光、朗伯比尔定理方面的公式要简单的多吧。

另外看着这几条熟悉的公式,又让我想起最近网上流行的一句说辞:“去年(2014)的《同桌的你》,今年(2015)的《左耳》,这两部电影,都离现实生活都太过遥远。实际上,我们的青春,没有抽烟,没有堕胎,没有轰轰烈烈的爱恨情愁。陪伴我们的应该只有两个男人:一个温柔了时光,一个惊艳了岁月,我至今都能清晰回忆起,他们一个叫薛金星,一个叫王后雄。”





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 3泰斗币 +26 收起 理由
春秋一语 + 8 原创内容
admin + 8 原创内容,相当用心啊
优弧 + 10 原创内容

查看全部评分

+1
20340°C
64
  • 韩国泡菜
  • 优弧
  • admin
  • 魂殇
  • 四老虎
过: 他们
因分享而快乐,学习以自强!
韩国泡菜 发表于 2015-5-26 18:39:51 显示全部楼层
来人啊,DC老湿又出新片啦!
顺便问个群友想知道的问题,Unity5目前可以使用哪些tween插件?
因分享而快乐,学习以自强!
优弧 发表于 2015-5-26 17:35:34 显示全部楼层
非常感谢。。。
因分享而快乐,学习以自强!
admin 发表于 2015-5-26 18:09:28 显示全部楼层
天之道又出新作了
因分享而快乐,学习以自强!
魂殇 发表于 2015-5-26 18:16:57 显示全部楼层
看看看看看看看看看看看看
因分享而快乐,学习以自强!
四老虎 发表于 2015-5-26 18:42:56 显示全部楼层
吊炸天,开工学习了~
因分享而快乐,学习以自强!
蜗牛jfo 发表于 2015-5-26 19:41:26 显示全部楼层
顶一个!
因分享而快乐,学习以自强!
天之道
 楼主|
发表于 2015-5-26 21:34:13 显示全部楼层
韩国泡菜 发表于 2015-5-26 18:39
来人啊,DC老湿又出新片啦!
顺便问个群友想知道的问题,Unity5目前可以使用哪些tween插件? ...

iTween,HOTween、DOTween、LeanTween、GoKit Tween、DFTween等等都可以使用~~
因分享而快乐,学习以自强!
御守 发表于 2015-5-27 07:20:56 显示全部楼层
学习学习  谢谢楼主的分享
因分享而快乐,学习以自强!
lyh916 发表于 2015-5-27 09:04:25 显示全部楼层
图文并茂啊,喜欢!
因分享而快乐,学习以自强!
春秋一语 发表于 2015-5-27 11:41:35 显示全部楼层
DC老师又出好文章了,赶紧支持起来!!
因分享而快乐,学习以自强!
南下的蚊子 发表于 2015-5-27 13:43:32 显示全部楼层
谢谢大神的分享
因分享而快乐,学习以自强!
jseeslover 发表于 2015-5-27 14:54:27 显示全部楼层
谢谢谢谢!!!
因分享而快乐,学习以自强!
冰漩云少 发表于 2015-5-28 12:44:21 显示全部楼层
神啊,终于让我找到了!
因分享而快乐,学习以自强!
天之道
 楼主|
发表于 2015-5-28 14:50:18 显示全部楼层
春秋一语 发表于 2015-5-27 11:41
DC老师又出好文章了,赶紧支持起来!!

3Q,多谢支持~{:5_121:}
因分享而快乐,学习以自强!
12345下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

VR/AR版块|Unity3d|Unreal4|新手报道|小黑屋|站点地图|沪ICP备14023207号-9|【泰斗社区】-专注互联网游戏和应用的开发者平台 ( 浙ICP 备 13006852号-15 )|网站地图

© 2001-2013 Comsenz Inc.  Powered by Discuz! X3.4

1
QQ