一每瞒、實驗要求
- 構(gòu)建一個小球滾動的游戲場景卒密;
- 創(chuàng)建一個小球旨椒,按鍵盤上的上下左右鍵腌乡,小球會朝相應的方向移動鸟顺,小球移動的時候相機也要相應移動酷宵;
- 在場景中創(chuàng)建多個立方體亥贸,每個立方體都在旋轉(zhuǎn);小球與立方體發(fā)生碰撞的時候浇垦,立方體消失炕置,計分板上得分加“1”;
- 當?shù)梅诌_到“5”分時男韧,在屏幕上顯示“XXX同學朴摊,你贏了!”此虑。
加分項目:
- 添加小球和立方體發(fā)生碰撞的特效甚纲,添加立方體隨機生成,添加小球撞擊阻礙物的物理效果朦前。
- 你能想到的可以實現(xiàn)的其他效果介杆。
游戲場景
二鹃操、小球設置 Player & 碰撞特效
2.1 上下左右移動
Player.cs 設置前后左右移動,以及 force 調(diào)節(jié)力大小春哨。
// Update is called once per frame 持續(xù)調(diào)用的命令
void Update () {
// 通過鍵盤控制移動
float h = Input.GetAxis("Horizontal"); // 得到水平軸的值 [-1,1] D正向, A負向
float v = Input.GetAxis("Vertical"); // W S
rd.AddForce(new Vector3(h, 0, v) * force); // 施加力 向量表示方向 控制運動方式 *force 快速更改方向
// eatText.GetComponent<Text>().text = "bingo!!"; // 設置GameObject的文本
}
2.2 小球移動荆隘,攝像機跟隨
FollowTarget.cs
FollowTarget.cs 讓 Main Camera 跟隨小球 Player 移動
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// camera script
public class FollowTarget : MonoBehaviour {
public Transform playerTransform; // player的Transform 把Player從面板上拖過去
private Vector3 offset; // 相機和小球最開始的偏移
// Use this for initialization
void Start () {
// 計算初始的時候位置的偏移
offset = transform.position - playerTransform.position; // main camera - player 向量差
}
// Update is called once per frame
void Update () {
// player current pos + offset = camera current pos
transform.position = playerTransform.position + offset;
}
}
2.3 用prefab創(chuàng)建多個旋轉(zhuǎn)的立方體
PickUps
PickUp.cs 讓每個立方體旋轉(zhuǎn)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// pickup script
public class PickUp : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () { // 調(diào)用 60次/s 1°/s
transform.Rotate(new Vector3(0, 1, 0)); // 繞著y軸旋轉(zhuǎn)
}
}
2.4 觸發(fā)檢測 添加 碰撞特效
2.4.1 坦克大戰(zhàn)爆炸特效
TankExplosion effect
Player.cs 在 OnTriggerEnter 中添加特效
爆炸特效
2.4.2 eat 文字彈出動畫
EatText
eat 放縮動畫
Player.cs 控制 eat 動畫在進入觸發(fā)器是出現(xiàn),離開觸發(fā)器時消失赴背。
eat 彈出特效