unity 2d文字跟随主角移动_使用 Unity 粒子系统实现 2D 人物足迹效果
前言
項(xiàng)目中使用的基本角色控制腳本是由 Unity Learn 中的官方教程 John Lemon's Haunted Jaunt(很不錯(cuò)的教程)中的示例控制腳本改進(jìn)而來(lái)。其基本思路是根據(jù)輸入計(jì)算一個(gè) 2 維向量?lookDirection?作為角色的“面向”,并根據(jù)這一向量移動(dòng)剛體以及播放動(dòng)畫(huà)。
它能夠保證對(duì)于任意角度,角色的移動(dòng)速度都保持一致,并且這一向量對(duì)于腳印效果的實(shí)現(xiàn)很重要。
如有疑問(wèn)可以查閱底部的教程鏈接或直接下載腳本。
部分腳本參考
基本思路:
首先來(lái)梳理一下想要的人物足跡的特性:
在人物移動(dòng)時(shí)生成,并在一段特定時(shí)間后消失,最好有個(gè)淡出效果
足跡會(huì)沿人物移動(dòng)軌跡左右交互排列
足跡的指向與人物移動(dòng)方向相同,也就是說(shuō)在人物轉(zhuǎn)向時(shí),足跡也應(yīng)旋轉(zhuǎn)對(duì)應(yīng)的角度
第一反應(yīng):建一個(gè)腳印的 prefab,利用動(dòng)畫(huà)器實(shí)現(xiàn)淡出效果,用腳本實(shí)現(xiàn)腳印的生成、銷(xiāo)毀、鏡像與旋轉(zhuǎn)。之后深入一想腳本大概要怎么寫(xiě),感覺(jué)頭大的不行,又想到了 Hierarchy 里面被 FootStep12345678 塞得滿滿當(dāng)當(dāng)?shù)膲邀悎?chǎng)面..還是換個(gè)方法吧
轉(zhuǎn)念一想:unity 的粒子系統(tǒng)似乎可以滿足所有特性:生成淡出銷(xiāo)毀全自動(dòng),跟隨人物也是基本操作,比較存疑的就是用腳本控制粒子的鏡像與旋轉(zhuǎn)。
之后當(dāng)然就是搜索有沒(méi)有現(xiàn)成的輪子可以用,別說(shuō),還真在 unity forums 找到了一個(gè)官方比較完美的粒子系統(tǒng)足跡效果。唯一的問(wèn)題就是它是一個(gè) 3D 示例,而我的游戲則是純 2D。
所以現(xiàn)在的問(wèn)題就是如何將這一方案轉(zhuǎn)換在 2D 中實(shí)現(xiàn)。
先來(lái)分析一下它的實(shí)現(xiàn)腳本:
用來(lái)生成腳印粒子的核心代碼是?Update()?中的這一部分:
其中比較重要的有兩個(gè)量:transform.right?與?transform.rotation
transform.right:物體?X?軸的方向,垂直于物體的面向。腳印需要在此方向上左右偏移。transform.rotation.eulerAngles.y:物體?Y?軸方向上的的旋轉(zhuǎn)角度,在這個(gè)示例中也是它的移動(dòng)方向旋轉(zhuǎn)的角度。俯視角的 2D 游戲中并不經(jīng)常直接操作角色對(duì)象的旋轉(zhuǎn),所以這兩個(gè)量在腳本中沒(méi)有意義,需要找一個(gè)與它們類(lèi)似的變量來(lái)替代它們的功能。
而在之前的角色控制腳本中,恰恰有一個(gè)很重要的二維向量:lookDirection,從某種意義上它就是角色的“面向”,能夠起到與 3D 中的?transform.front?類(lèi)似的效果。
果斷使用?lookDirection?向量進(jìn)行等效替換:
transform.right?與?transform.front?垂直,也就是說(shuō)我們需要一個(gè)與?lookDirection?垂直的向量。
而兩向量垂直怎么算來(lái)著?X1X2+Y1Y2 = 0?嘛。
transform.right * gap * dir 等效替換為 new Vector3(lookDirection.y * gap * dir, -lookDirection.x * gap * dir, -5)transform.rotation.eulerAngles.y?為物體面向旋轉(zhuǎn)的角度,那么直接計(jì)算?lookDirection?與?Vector2(0, 1)?向量的夾角就完事了。
transform.rotation.eulerAngles.y 等效替換為 Vector2.Angle(new Vector2(0, 1), lookDirection)OK!腳本的基本思路完成了,之后就是設(shè)置粒子系統(tǒng)了。
創(chuàng)建足跡系統(tǒng)使用的腳印材質(zhì):
創(chuàng)建一個(gè)默認(rèn)材質(zhì),然后將它的?shader?更改為?Legacy Shaders / Particles / Alpha Blended,將腳印的 sprite 拖拽到選框中。重命名為?footPrint。
設(shè)置粒子系統(tǒng)
在 Player 對(duì)象下新建一個(gè)粒子系統(tǒng),并命名為?FootStep
如圖設(shè)置粒子系統(tǒng):
最后,根據(jù)情況修改角色控制腳本并調(diào)整參數(shù)
之后就是快樂(lè)的測(cè)試 -> 改代碼 -> 測(cè)試 -> 改代碼循環(huán)往復(fù)...
最終效果:
第一次寫(xiě)教程,啰里啰嗦寫(xiě)得不好還請(qǐng)見(jiàn)諒哈
鏈接:
官方提供的使用 Ringbuffer 實(shí)現(xiàn)的3D 腳印效果示例:
https://pan.baidu.com/s/1g9s9GIiILRZpMVeQ640_5Q
提取碼:e8g6
項(xiàng)目中使用的 Charactor Controller 腳本(項(xiàng)目本身太大了就不放了):
https://pan.baidu.com/s/1a6A46aG1fD2ub3d__P4Nvg
提取碼:rqn1
參考:
https://learn.unity.com/tutorial/wan-jia-jiao-se-di-2-bu-fen?projectId=5dfa9a5dedbc2a26d1077ca8#5e391a9dedbc2a00227146d5
John Lemon's Haunted Jaunt 玩家角色 第二部分
https://forum.unity.com/threads/particle-system-ringbuffer-demo.740207/
Particle System Ringbuffer demo
總結(jié)
以上是生活随笔為你收集整理的unity 2d文字跟随主角移动_使用 Unity 粒子系统实现 2D 人物足迹效果的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Axure的页面交互
- 下一篇: sshpass和scp的使用