今天要繳交練習過程中五張螢幕抓圖 (自己決定哪些重要就抓下繳交)
*** 抓下的圖片中要有你的學號與姓名
先下載以下檔案 haha38.unitypackage (4.1MB)備用
|
裡面有一些腳本可複製去用, 也有一些隨便做的特效
用 Unity 開新專案(Project) 然後把上述 haha38.unitypackage 匯入
以下腳本可用來控制角色移動 (上下左右) p 靜止不動, r 歸位
// ctrl.js 上下左右控制角色(p 停指, r 重置) -- by [email protected]
private var tf: Transform;
private Vector3 origPos;
function Start( ) {
tf = transform;
origPos = tf.position;
}
function Update ( ) {
tf.Translate(Input.GetAxis("Horizontal")*speedX*Time.deltaTime, 0,
Input.GetAxis("Vertical")*speedZ*Time.deltaTime,
Space.World); // 世界座標
tf.Translate(0, Input.GetAxis("Jump") *speedY * Time.deltaTime,
0, Space.World);
if(Input.GetKeyDown(KeyCode.P) ) myStop( ); //不動
if(Input.GetKeyDown(KeyCode.R) ) resetPos( );
}
//////
function myStop( ) { // 不動
tf.rotation.eulerAngles = Vector3( 0, 0, 0); // 轉正
var rg = tf.GetComponent(Rigidbody); // 取得剛體, 暫時命名 rg
rg.velocity = Vector3(0, 0, 0); // 移動力量歸零
//tf.rigidbody.velocity = Vector3(0, 0, 0); // 這樣也是移動力量歸零
rg.angularVelocity = Vector3.zero; // 停止轉動 (旋轉力歸零)
// rg.rotation.w = 0; // 旋轉力量歸零 ; 這句現在註解掉 !!
//rg.Sleep( ); // 這樣也可以 把移動力量與旋轉力量都歸零 !
}
///
function resetPos( ) { // 拉回原處 + 不動
tf.position = origPos;
myStop( );
}
/// 以下腳本 按 y 可發射特效
/// tmd.js
#pragma strict
// 按 y 發射特效
function Start () {
if( ! parSys)parSys = gameObject.GetComponentInChildren(ParticleSystem); // 3.5 or later
if(!parSys) parSys =
GameObject.Find("呼死").GetComponent.<ParticleSystem>();
if(parSys) parSys.enableEmission = false;
if(parSys) parSys.enableEmission = false;
}
function Update () {
if(Input.GetKeyDown(KeyCode.Y)) haha( );
}
var parSys : ParticleSystem; // for ver. 3.5 or later versions
function haha( ) {
if( ! parSys ) return;
parSys.enableEmission = true;
parSys.Play( );
}
#pragma strict
// 按 y 發射特效
function Start () {
if( ! parSys)parSys = gameObject.GetComponentInChildren(ParticleSystem); // 3.5 or later
if(!parSys) parSys =
GameObject.Find("呼死").GetComponent.<ParticleSystem>();
if(parSys) parSys.enableEmission = false;
if(parSys) parSys.enableEmission = false;
}
function Update () {
if(Input.GetKeyDown(KeyCode.Y)) haha( );
}
var parSys : ParticleSystem; // for ver. 3.5 or later versions
function haha( ) {
if( ! parSys ) return;
parSys.enableEmission = true;
parSys.Play( );
}
Unity基礎特效2/2_特效型態與商店資源
Posted on 2017-01-02 by ArtRice
Unity 內建多種粒子樣式
點選[Assets]→[Import Package]→[Particles],之後點選[Import]將所有粒子材質匯入
例如, 希望物體(或人)移動後有耍帥的尾巴軌跡, 可以用 [Trail Renderer]
這特效可在物體移動過後留下長長的尾巴
點選 要有尾巴的遊戲物件, 加入元件:
[Add Component] → [Effects] → [Trail Renderer]
當然要好好的設定參數, 讓拖動的尾巴呈現你要的特效
關於[Trail Renderer]項目中可設定的常用項目有 :
Materials :尾巴的材質
Time : 尾巴的持續時間, 1 秒很恰當
Start Width : 尾巴的起始寬度
End Width : 尾巴結束時的寬度
Colors : 尾巴從開始到結束時的顏色
點選[Assets]→[Import Package]→[Particles],之後點選[Import]將所有粒子材質匯入
例如, 希望物體(或人)移動後有耍帥的尾巴軌跡, 可以用 [Trail Renderer]
這特效可在物體移動過後留下長長的尾巴
點選 要有尾巴的遊戲物件, 加入元件:
[Add Component] → [Effects] → [Trail Renderer]
當然要好好的設定參數, 讓拖動的尾巴呈現你要的特效
關於[Trail Renderer]項目中可設定的常用項目有 :
Materials :尾巴的材質
Time : 尾巴的持續時間, 1 秒很恰當
Start Width : 尾巴的起始寬度
End Width : 尾巴結束時的寬度
Colors : 尾巴從開始到結束時的顏色
// 遊戲物件 與 Camera 的距離 dist
var tmp3 :Vector3 = transform.position - camera.transform.position;
var dist :float = Vector3.Dot(tmp3, camera.transform.forward);
//The advantage is that this gives you the distance inward from the plane of the "screen",
//.. and it is also a bit more efficient in a frame update.
// C#
Vector3 tmp3 = transform.position - camera.transform.position;
float dist = Vector3.Dot(tmp3, camera.transform.forward);
var tmp3 :Vector3 = transform.position - camera.transform.position;
var dist :float = Vector3.Dot(tmp3, camera.transform.forward);
//The advantage is that this gives you the distance inward from the plane of the "screen",
//.. and it is also a bit more efficient in a frame update.
// C#
Vector3 tmp3 = transform.position - camera.transform.position;
float dist = Vector3.Dot(tmp3, camera.transform.forward);
/////////////////////////////////////////////
3/16 練習後的專案檔 Project Week04.zip
Proximity Detection 意思是鄰近偵測,
察看 in a range of, 又稱 昆蟲偵測系統 !
察看 in a range of, 又稱 昆蟲偵測系統 !
(3)生出一個方塊(Cube)放林志玲與周杰倫中間
GameObject >> Create Other >> Cube
(a)找到一個綠色圖片(green)拉給該 Cube 以便自動建立材質球,
如果沒綠色圖片就自己上網打"綠色"找圖片來用 !
必要時可以連到 http://pixlr.com 做線上編輯圖片!
(b)把腳本 LaDrop 拉給該 Cube 以便可以拖拉!
(4)讓周杰倫身偵測林志玲在某範圍內且越來越近時發出奸笑聲 :-)
注意, 若中間有被其他物件擋住(blocked)或不是距離越來越近則不要笑 !!
所謂不是距離越來越近意思是越來越遠或是距離沒有變化!
(a)建立一個 JavaScript 腳本 InsetAI 如下:
// InsetAI.js -- proximity detection, by [email protected]
// check proximity 意思是鄰近偵測, 察看 in a range of, 又稱昆蟲偵測系統 !
// 把這腳本掛給周杰倫, 然後變數 playerObject 掛載林志玲 !
// 通常, 這 script 腳本 要 掛 在 (should be attached to) 敵人(your Enemy) 身上, 偵測 Player
// Detect player in range of enemy... (proximity : 接近/鄰近)
// i.e., Detecting Proximity of a player to this object (enemy, for example)
// if the enemy as further than maxDistance from player, it cannot see player
// if(Vector3.Distance(transform.position, playerObject.position) < maxDistance) playerClosed = true;
///
/// 參考 http://docs.unity3d.com/Documentation/ScriptReference/Vector3-sqrMagnitude.html
///
//using Physics.Raycast to check 是否被擋住
//see http://docs.unity3d.com/Documentation/ScriptReference/Physics.Raycast.html
///////
var playerObject: GameObject; // 這請掛載林志玲
//playerObject here will be your Player GameObject (這次掛林志玲)
var sound: AudioClip; // 請掛個笑聲給這變數
var maxDistance: float = 5.0; // 某範圍, 可在設計階段 Inspector 窗修改
private var squareMaxDistance = maxDistance * maxDistance;
private var oldDist = 9999999.0;
function actSeeYou( ) { //enemy sees you 看到玩家在某範圍內
Debug.Log(" > > > found player close to me ! 靠近我喔 ! " + gameObject.name);
playHaha( );
// . . .
} //actSeeYou(
function actNotSee( ) { //enemy doesn't see you
//...
} //actNotSee(
private var playing = false;
function playHaha( ) {
if(playing) return;
playing = true;
AudioSource.PlayClipAtPoint(sound, transform.position);
yield WaitForSeconds (sound.length);
playing = false;
} // playHaha(
function Start( ) {
squareMaxDistance = maxDistance * maxDistance;
} // Start(
function Update( ) {
if(!playerObject) return; // 防呆 !
var playerDirection : Vector3 =
playerObject.transform.localPosition - transform.localPosition;
var enemyDirection : Vector3 = transform.TransformDirection(Vector3.forward);
var newDist = playerDirection.sqrMagnitude;
var playerClosed = false;
playerClosed = newDist < squareMaxDistance;
// same as below:
// if(Vector3.Distance(transform.position, playerObject.position) < maxDistance) playerClosed = true;
var closing : boolean = newDist < oldDist; // approaching to
oldDist = newDist;
var hit : RaycastHit; // 用來看中間有沒其他物件
if( playerClosed) {
//by using a Raycast you make sure an enemy does not see you (Blocked by some other object)
//例如, enemy 因為它與你之間有建築物(Building)擋住視線而看不到你 !
if (Physics.Raycast (transform.position, playerDirection, hit, maxDistance)
&& hit.collider.gameObject == playerObject)
{
if( ! closing ) return; // 遠去 !
actSeeYou( ); //enemy sees you
}else{
actNotSee( ); //enemy doesn't see you
}
} // if(
} // Update(
//////// End of InsetAI.js
(b)選取場景上的周杰倫, 把這腳本 InsetAI 掛給場景上的周杰倫,
此時檢視窗可看到三個變數: Player Object, Sound, Max Distance
其中 Max Distance 參數是鄰近偵測的距離!
(c)保持選取周杰倫, 把場景上的林志玲拉給檢視窗 Player Object 變數!
(d)保持選取周杰倫, 到 sounds 目錄找奸笑的 evilLaugh 拉給檢視窗內變數 Sound
(e)你可以先測試看看周杰倫在靠近林志玲之時會不會奸笑!? (聲音喇叭要打開)
(5)生出一個 Sphere 球體
GameObject >> Create Other >> Sphere
(a)拉一個你喜歡的顏色圖片給它建立材質球
(b)點選該球體, 把腳本 LaDrop 掛給它;
(c)保持選取該球體, 敲 Ctrl_C 複製, 敲 Ctrl_V 貼上, 再敲 Ctrl_V 貼上,
此時有三個球體 Sphere, 請把其中兩個名稱分別改為 Sphere2 和 Sphere3 以便可看出不同
並把該三個球體放到畫面左下角適當位置
(d)調整 Sphere2 和 Sphere3 的大小為大約一半大小
(e)把 Sphere2 和 Sphere3 這兩個 Tag 設定為 Good
注意剩下另外一個比較大的 Sphere 不要 Tag 喔, 以下稱這個球體為大力丸 :-)
今天上課用以下腳本 Demo 測試兩個不同方式
(考慮擋住以及不考慮黨助)的靠近偵測
(考慮擋住以及不考慮黨助)的靠近偵測
3/16 練習後的專案檔 Project Week04.zip
練習讓敵人靠近就發出聲音
用 Inset234.js 練習讓敵人靠近就發出聲音
(6)要寫個 JavaScript 腳本給該剩下另外一個較大沒 Tag 的球體Sphere, 以便:
** 周杰倫在某範圍內(建議6.95公尺)這大力丸會閃爍並發出警告聲音(不考慮擋住的問題)
** 林志玲在某範圍內(建議3.88公尺)這大力丸也會閃爍並發出警告聲音,
但是, 如果中間有其他物件擋住則不算! (與周杰倫在附近不同)
** 警告聲音要靠越近越大聲, 剛進入範圍最小聲
(a)建立一個 JavaScript 腳本 Inset234 如下: (請參考比較前面腳本 InsetAI)
// Inset234.js -- check proximity , by [email protected]
// 鄰近偵測, 若有人靠近, 讓大力丸閃爍 !
// 請將這 script 腳本 要 掛 在 大力丸 球體(Sphere)
// Detect player in range of enemy... (proximity : 接近/鄰近)
//using Physics.Raycast to check 是否被擋住
//see http://docs.unity3d.com/Documentation/ScriptReference/Physics.Raycast.html
///////
var player: GameObject; // 林志玲
var player22: GameObject; // 周杰倫
//playerObject here will be your Player GameObject
var maxDistance: float = 3.88; // 某範圍
var maxDistance22: float = 6.95; // 某範圍
private var squareMaxDistance = maxDistance * maxDistance;
private var squareMaxDistance22 = maxDistance22 * maxDistance22;
private var oldDist = 9999999.0;
private var newDist = oldDist;
private var oldDist22 = 9999999.0;
private var newDist22 = oldDist22;
private var playing = false;
private var origColor;
function actSeeYou( ) { //enemy sees you 看到玩家在某範圍內
playHaha( );
// . . .
} //actSeeYou(
function jjSeeYou( ) { //enemy sees you 看到玩家在某範圍內
playHaha( );
// . . .
} //actSeeYou(
function Start( ) {
origColor = renderer.material.color;
squareMaxDistance = maxDistance * maxDistance;
squareMaxDistance22 = maxDistance22 * maxDistance22;
}
function Update( ) {
voiceDist = newDist; squareDist = squareMaxDistance;
if( closed(player) ) actSeeYou( ); //enemy sees you
voiceDist = newDist22; squareDist = squareMaxDistance22;
if( closed22(player22) ) jjSeeYou( );
} // Update(
private var voiceDist = newDist;
private var squareDist = squareMaxDistance;
function playHaha( ) {
if(playing) return;
playing = true;
renderer.material.color = Color.blue;
var vol : float = Mathf.Lerp(0.88, 0.01, voiceDist / squareDist);
if(audio) audio.PlayOneShot(audio.clip, vol); // vol 音量
yield WaitForSeconds (0.5);
renderer.material.color = origColor;
yield WaitForSeconds (0.8);
playing = false;
} //playHaha(
function closed( playerObject: GameObject) : boolean {
if(playing) return false;
if(!playerObject) return false; // 防呆 !
var playerDirection : Vector3 =
playerObject.transform.localPosition - transform.localPosition;
var myDirection : Vector3 = transform.TransformDirection(Vector3.forward);
newDist = playerDirection.sqrMagnitude;
var playerClosed = newDist < squareMaxDistance;
var closing : boolean = newDist < oldDist; // approaching to
oldDist = newDist;
var hit : RaycastHit; // 用來看中間有沒其他物件
var blocked = true;
if (Physics.Raycast (transform.position, playerDirection, hit, maxDistance)
&& hit.collider.gameObject == playerObject) blocked = false;
if( playerClosed) { //
// if( ! closing ) return false; // 遠去 !
if(blocked) return false; // 被某物件擋住 !
return true;
} // if(
return false;
} // closed(
function closed22( playerObject: GameObject) : boolean {
if(playing) return false;
if(!playerObject) return false; // 防呆 !
var playerDirection : Vector3 =
playerObject.transform.localPosition - transform.localPosition;
var myDirection : Vector3 = transform.TransformDirection(Vector3.forward);
newDist22 = playerDirection.sqrMagnitude;
var playerClosed = newDist22 < squareMaxDistance22;
var closing : boolean = newDist22 < oldDist22; // approaching to
oldDist22 = newDist22;
var hit : RaycastHit; // 用來看中間有沒其他物件 blocked by some other objects
var blocked = true;
if (Physics.Raycast (transform.position, playerDirection, hit, maxDistance22)
&& hit.collider.gameObject == playerObject) blocked = false;
if( playerClosed) { //
// if( ! closing ) return false; // 遠去 !
// if(blocked) return false; // 被某物件擋住 !
return true;
} // if(
return false;
} // closed22(
//////// End of Inset234.js
(b)把這腳本 Inset234 拉給大力丸球體 Sphere
(c)到檢視窗注意剛掛上之腳本的兩個變數 Player 和 Player22
把場景的林志玲拉給Player,
把場景的周杰倫拉給Player22
(d)保持選取大力丸球體 Sphere,
加一個 Audio Source(音源)元件(Component) 給大力丸球體 Sphere
到 sounds 目錄找 alert 音效拉給該 Audio 元件(在檢視窗)的 Audio Clip(聲音片段)
Play 起來測試看看, 把物件拉靠近大力丸時有沒聲音
以下圖片中 iii 就是 Inset234.js 這腳本
圖片中 iii 就是 inset234.js 這腳本
練習讓敵人靠近 就 觸發特效
(7)練習靠近時會有粒子系統特效
(a)再建立一個球體 Sphere, 改名 SphereXX
(b)拉一個藍色或是綠色圖片給該 SphereXX
(c)把這 SphereXX 放到螢幕右上角落
(d)建立 JavaScript 腳本 Inset567 如下:
(a)再建立一個球體 Sphere, 改名 SphereXX
(b)拉一個藍色或是綠色圖片給該 SphereXX
(c)把這 SphereXX 放到螢幕右上角落
(d)建立 JavaScript 腳本 Inset567 如下:
////////////////////
// Inset567.js -- by [email protected]
// 把這腳本掛兩份給 SphereXX
// 這Inset567.js 是拿 Inset234.js 稍微改一下, 主要加入粒子系統 (ParticleSystem)
// 並將程式碼重新整理得更容易看懂與使用 (一份只監控一個物件) !
// 注意, Unity3D 3.5 版開始的粒子系統處理寫法多了一種不同寫法!
////
// Detect player in range of enemy... (proximity : 接近/鄰近)
// 鄰近偵測, 這也是從 InsetAI.js (或說 Inset234.js)改來的, 若有人靠近, 觸發粒子系統 !
// 請將這 script 腳本 要 掛 在 上面左邊邊的大力丸 (Sphere1)
// 要掛兩份喔, 一份監控林志玲, 另一份監控周杰倫,
// 可在 Inspector 窗內看到 SphereXX 有兩個同名腳本, 參數可以設定不同!
/////
//注意, 還要創建一個粒子系統(ParticleSystem)並拉給 SphereXX 當作兒子(Child) 並適當設定 !
//還有, 可以拉一個音效給 Sphere1, 這樣若有人靠近也會發出聲音 (不拉則沒音效)!
// 音效拉入後預設會在遊戲開始先播放一次, 若不要, 須把 Play On Awake 的勾選拿掉
//////
//You can use Physics.Raycast to check 是否被擋住 (blocked by some other object)
//see http://docs.unity3d.com/Documentation/ScriptReference/Physics.Raycast.html
///////
var player: GameObject; // 請掛 林志玲 and/or 周杰倫
//playerObject here will be your Player GameObject
var maxDistance: float = 3.28; // 某範圍
var checkClosing: boolean = false;
var checkBlocked: boolean = false;
private var squareMaxDistance;
private var oldDist = 9999999.0;
private var newDist = oldDist;
private var playing = false;
private var origColor;
function actSeeYou( ) { //enemy sees you 看到玩家在某範圍內
playHaha( );
// . . . 如果要, 還可做其他事
} //actSeeYou(
//private var parSys : ParticleEmitter; // for Unity3D ver 3.4 and older version
// you can use ParticleSystem if you are using ver. 3.5 or later versions
private var parSys : ParticleSystem; // for ver. 3.5 or later versions
function Start( ) {
squareMaxDistance = maxDistance * maxDistance;
origColor = renderer.material.color;
//parSys = gameObject.GetComponentInChildren(ParticleEmitter); // 3.4
parSys = gameObject.GetComponentInChildren(ParticleSystem); // 3.5 or later
if(!parSys) parSys = GameObject.Find("好爽喔").particleSystem;
if(parSys) parSys.enableEmission = false;
} // Start(
function Update( ) {
voiceDist = newDist; squareDist = squareMaxDistance;
if( closed(player) ) {
// 你可在 Inspector 窗勾選CheckClosing 或 CheckBlocked, 測試有越來越近, 以及有被擋住 !
if(checkClosing)if( ! closing(player) ) return; // 注意是 遠去 !!!
if(checkBlocked)if( blocked(player) ) return; // 被某物件擋住 !
actSeeYou( ); //enemy sees you
}
} // Update(
function closed( playerObject: GameObject) : boolean { // Am I closed to the playerObject ?
if(playing) return false;
if(!playerObject) return false; // 防呆 !
var playerDirection : Vector3 =
playerObject.transform.localPosition - transform.localPosition;
var myDirection : Vector3 = transform.TransformDirection(Vector3.forward);
newDist = playerDirection.sqrMagnitude;
Debug.Log(""+playerObject.name+
" newDist=" + newDist +" , squareMaxDistance=" +squareMaxDistance);
return newDist < squareMaxDistance; // 是否在範圍內
} // closed(
function closing(playerObject: GameObject) : boolean { // 越來越近嗎 ?
var ans = true;
var playerDirection : Vector3 =
playerObject.transform.localPosition - transform.localPosition;
newDist = playerDirection.sqrMagnitude;
ans = newDist < oldDist; // approaching to
oldDist = newDist;
return ans;
} //closing(
function blocked(playerObject: GameObject) : boolean {
var ans = true;
var playerDirection : Vector3 =
playerObject.transform.localPosition - transform.localPosition;
var hit : RaycastHit; // 用來看中間有沒其他物件
if (Physics.Raycast (transform.position, playerDirection, hit, maxDistance)
&& hit.collider.gameObject == playerObject) ans = false;
return ans;
} //blocked(
//////////////////////////////////
private var voiceDist = newDist;
private var squareDist = squareMaxDistance;
function playHaha( ) {
if(playing) return;
playing = true;
partEmit( ); // particles
var vol : float = Mathf.Lerp(0.88, 0.12, voiceDist / squareDist);
if(audio) audio.PlayOneShot(audio.clip, vol); // vol 音量
yield WaitForSeconds (0.5);
yield WaitForSeconds (0.3); // Note !
partEmitOff( ); // 關掉 粒子系統
playing = false;
} // playHaha(
function partEmit( ) {
/// for Unity3D 3.5 and later:
//gameObject.GetComponentInChildren(ParticleSystem).enableEmission = true;
if( ! parSys ) return;
parSys.enableEmission = true;
parSys.Play( );
/// for 3.4 or OLDer version
//if( ! parSys ) return; // 沒掛 粒子系統 !
//Debug.Log(""+ gameObject.name+" found particleEmitter ...");
//parSys.emit = true;
} // partEmit(
// see http://docs.unity3d.com/Documentation/Components/class-EllipsoidParticleEmitter.html
function partEmitOff( ) {
if( ! parSys ) return; // 沒掛 粒子系統 !
//parSys.emit = false; // 3.4
/// for Unity3D 3.5 or later version
parSys.enableEmission = false;
/// gameObject.GetComponentInChildren(ParticleSystem).enableEmission = false;
} // partEmitOff(
//////// End of Inset567.js
(e)把這腳本拉兩份給 SphereXX
注意檢視窗變數 !
(e1)把周杰倫拉給其中一份的 Player 變數
檢視窗中的 Max Distance 是 3.28 不要改!
(e2)把林志玲拉給另外一份的 Player 變數
在檢視窗把林志玲這份的變數 Max Distance 改為 6.98
並請把 Check Closing 與 Check Blocked 都勾選起來 !
Check Closing 意思是 越來越近才算 !
Check Blocked 意思是 沒被其他物件擋住才算 !!
(f)PLay 起來測試
分別讓周杰倫與林志玲靠近該 SphereXX 看看會怎樣?
看不到粒子系統ㄟ! 因為還沒創建粒子系統 !
靠近也沒聲音啊 ! 因為沒給它 Audio Source (音源)
(8)加入聲音
(a)選取 SphereXX, 加入元件(Component) Audio Source
(b)拉 babyCry 音效給該 Audio Source 的 Audio Clip
或是自己到www.freesound.org抓你喜歡的免費音效或聲音檔案來用!
(c)關於音效
(c1)注意, 音效拉入後預設會在遊戲開始先播放一次,
若不要這樣, 須把 Play On Awake 的勾選拿掉, 表示不要自動播放!
(c2)Loop 的勾選打勾, 表示不自動停播!
(c3)展開 3D Sound Settings (因為 babyCry 是 3D Sound)
把裡面 Volume Rolloff 右邊設定為 Linear Rolloff
(原先是 Logarithmic Rolloff 表示與距離為對數比, 現在改為線性比)
** 再測試看看, 會有聲音了 :-)
(9)加入粒子特效(Particle Effect)
(a)創建一個粒子系統(ParticleSystem), 自己隨便調整參數(上學期老師的課應該教過)
GameObject >> CreateOther >> Particle System
建立的粒子系統可參考這做設定:
Duration 3.00
Start Lifetime 0.38 3
Start Speed 0
Start Size 0.033 0.168
Gravity Multipler -2
Max Particles 666
v Emission 打勾
底下 Bursts 0.33 18, 1.0 28, 2.0 38, 3.0 58
(b)把場景上剛建立的粒子系統並拉給 SphereXX 當作兒子(Child),
立即到檢視窗調整此粒子系統的位置(是相對位置)為 (0, 0, 0);
這樣該粒子系統才會以 SphereXX 的位置為中心點!
(c)點階層窗的該粒子系統, 到 Inspector 窗中把 Emit 勾選去掉,
把 Max Size 改 0.3, 把其他參數隨便改,
往下捲, Rnd Velocity 設 (1, 2, 3) 或其他你喜歡的,
顏色隨便設幾種鮮豔顏色 !