unity---2d游戏杂记


2d游戏制作的笔记

save Layout 增加配置

Packges文件夹

	插件

调整视野

鼠标中键			拉近拉远
鼠标右键			平移
Alt+鼠标左键	移动视角

Pivot/Center

当前物体中心和多个物体共同的中心

Local/Global

全局坐标

步移工具

工具:

1.Sprite Renderer 
	Order in Layer 可以调节物体的前后关系 值越大越在前面

不要乱改script文件名

Start()方法只会执行一次,类似于初始化
Update()方法会不断循环执行
Time.deltaTime	表示多久时间可以跑一次Loop	解决不同电脑运作速度不同
如果将属性设置为public或者加入[SerializeField] 就可以直接在Unity中调整

Rigidbody 2D 刚体

类似真实物体,可以自由落体

Collider 碰撞

给两个物体都增加Collider组件,可以碰撞在一起
is Trigger 不会碰撞在一起,只作为监测

判断是否撞在一起

 private void OnCollisionEnter2D(Collision2D other) {
    if(other.gameObject.tag == "Floor1") Debug.Log("撞到第一种阶梯");
    else if(other.gameObject.tag=="Floor2")Debug.Log("撞到第二种阶梯");}

判断是否经过这个物体 需要给对应物体勾选 isTrigger

private void OnTriggerEnter2D(Collider2D other) {
    if(other.gameObject.tag=="DeathLine"){
      Debug.Log("你输了");
    }
}

将你制作好的样板放入assets文件中,可以快速拖去重复相同的样板

	overris 还可以修改所有样板

代码创建物体 ,并放入另一个物体下

 Instantiate(FloorPrefabs[r],transform);

删除物件

 Destroy(gameObject);

控制父物件去更新子物件

 transform.parent.GetComponent().SpawnFloor();

让物件不断移动

 transform.Translate(0,MoveSpeed*Time.deltaTime,0); 

控制物件失去碰撞功能

  currentFloor.GetComponent().enabled=false;

法线法向量

垂直接触面 

让某个物体不显现

 HpBar.transform.GetChild(i).gameObject.SetActive(false);//反之为true

使用UI库

using UnityEngine.UI;	

人物水平翻转,转身

 GetComponent().flipX=false;

给人物添加动画

component功能选择animator
创建animator controller
windows -> animation
创建动作clip
将贴图或者录制好的图片放入
调出animator 窗口
选择条件
	bool			anim.SetBool("run",true);
	trigger		anim.SetTrigger("hurt");
设置Layers权重值
选择箭头线
	settings
		可以将切换动画的时间全部设为零,√可以去掉
		exit time 为动画闪烁的次数

添加声音

component -> audioSourse
取消勾选play on wake 一开始就播放
other.gameObject.GetComponent().Play();

游戏暂停

Time.timeScale=0f;

UI button

on click()
选择对象和方法

继续游戏

using UnityEngine.SceneManagement;
public void Replay()
{
    Time.timeScale=1f;
    SceneManager.LoadScene("SampleScene");
}