Unity学习笔记(一):BallGame
(一)Player:
public float speed=10;
public float turnSpeed = 4;
speed:延z轴移动(前进方向)的速度。
turnSpeed:延x轴移动的速度。
public GameObject prefebMusic;
void Start()
{
var music = GameObject.Find("Bgmusic");
if (music == null)
{
var m=Instantiate(prefebMusic,null);
DontDestroyOnLoad(m);
m.name = "Bgmusic";
}
}
操作:1.把它设为预置体,即拖到这里Gk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODE1NTcz,size_16,color_FFFFFF,t_70)
2.删除背景音乐组件并将其拖到Player下
if (Input.GetKeyDown(KeyCode.R))
{
SceneManager.LoadScene(0);
Time.timeScale = 1;
// return;
}
如果输入R键,回到初始场景,0即为初始场景。时间规模恢复为1(正常)。return加不加好像没有太大区别(?)
float x = Input.GetAxis("Horizontal");
transform.Translate(x * turnSpeed * Time.deltaTime, 0, speed * Time.deltaTime);
Input.GetAxis:获取x的水平输入。(Horizontal为键盘上的左右键,AD键,摇杆的左右键。)
transform.Translate:x延水平方向的位移乘以时间即为位移,y位移为0,延z方向的位移。
//屏幕动态旋转效果
var c = Camera.main.transform;//取到主摄像机变换组件
Quaternion cur = c.rotation;//获得摄像机当前旋转角度并用四元数表示
Quaternion target = cur * Quaternion.Euler(0, 0, x * 1.5f);//将当前旋转角度加入与输入有关的旋转
Camera.main.transform.rotation = Quaternion.Slerp(cur, target, 0.5f);//在当前旋转角度加上和输入有关的旋转角度计算出一个平滑差值
if (transform.position.x < -4 || transform.position.x > 4)
{
transform.Translate(0, -10 * Time.deltaTime, 0);
}
如果x的坐标超过轨道两边界限,即视为出局。造成小球掉落的效果。
if(transform.position.y<-20)
{
Time.timeScale = 0;
}
如果小球掉落距离超过20个单位,时间静止。
(2)Barrier
private void OnTriggerEnter(Collider other)
{
Debug.Log(other.name+"碰到了我");//为了检测是否碰到了
if (other.name == "Player")
{
Time.timeScale = 0;
}
}
在碰到之前先将其设置为刚体。(触发器)
如果碰到了,游戏结束(时间规模变为0,时间静止)。
(3)Finish
private void Start()
{
GameObject canvas = GameObject.Find("Canvas");
canvas.transform.Find("Panel").gameObject.SetActive(false);
}
private void OnTriggerEnter(Collider other)
{
GameObject canvas=GameObject.Find("Canvas");
canvas.transform.Find("Panel").gameObject.SetActive(true);
//组件及相关查找问题
}
设定一个Panel,一个text组件(显示恭喜通关)。在未碰到之前显示false,碰到之后显示True。