一、实验要求
- 构建一个小球滚动的游戏场景;
- 创建一个小球,按键盘上的上下左右键,小球会朝相应的方向移动,小球移动的时候相机也要相应移动;
- 在场景中创建多个立方体,每个立方体都在旋转;小球与立方体发生碰撞的时候,立方体消失,计分板上得分加“1”;
- 当得分达到“5”分时,在屏幕上显示“XXX同学,你赢了!”。
加分项目:
- 添加小球和立方体发生碰撞的特效,添加立方体随机生成,添加小球撞击阻碍物的物理效果。
- 你能想到的可以实现的其他效果。
二、小球设置 Player & 碰撞特效
2.1 上下左右移动
Player.cs 设置前后左右移动,以及 force 调节力大小。
// Update is called once per frame 持续调用的命令
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.csFollowTarget.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创建多个旋转的立方体
PickUpsPickUp.cs 让每个立方体旋转
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 () { // 调用 60次/s 1°/s
transform.Rotate(new Vector3(0, 1, 0)); // 绕着y轴旋转
}
}
2.4 触发检测 添加 碰撞特效
2.4.1 坦克大战爆炸特效
TankExplosion effectPlayer.cs 在 OnTriggerEnter 中添加特效
爆炸特效2.4.2 eat 文字弹出动画
EatText eat 放缩动画Player.cs 控制 eat 动画在进入触发器是出现,离开触发器时消失。
eat 弹出特效
网友评论