判断是否点击在UI上:752-30
using UnityEngine.EventSystems;
EventSystem.current.IsPointerOverGameObject()==false 没有点击在UI上
判断是否点击在UI上:752-30
using UnityEngine.EventSystems;
EventSystem.current.IsPointerOverGameObject()==false 没有点击在UI上
改画布为world space进行渲染,移除背景图片和canvas render。文字改为开始游戏,将canvas调至炮台头部,适当调整其位置使其合适,同样步骤创建退出按钮,适当调整摄像机位置使其游戏视图完整。改按钮button脚本transition为animation,改animation的controller为按钮,
创建end动作文件夹,给背景的alpha值添加关键帧,game over改变位置使其自上而下出现,重玩和菜单则从两边过来,添加位置关键帧
void onTriggerEnter(Collider col)
{
if(col.tag=="Enemy")
{col.GetComponent<Enemy>().TakeDamage(damage);
}}
视频中的void UpdateEnemys();方法可以简化成:void UpdateEnemys()
{
for (int i = 0; i < Enemys.Count; i++)
{
if (Enemys[i]==null)
{
Enemys.RemoveAt(i);
i--;
}
}
}
移除空元素后,索引减一,Enemys数量减一,
新生成一个Enemys集合,索引 i 前无空对象,只需再查找i和i后的集合。
视频中搞复杂了
在视频中并没有调用OnDestory方法,会导致报错,应该在摧毁物体的同时调用该方法。
IEnumerator SpawnEnemy()
{
}
EventSystem.current.IsPointerOverGameObject()
鼠标是否放在UI上
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
返回鼠标到摄像机的射线。
Horizontal
Vertical
Horizongtal
Vertical
Mouse ScrollWheel
Mouse ScrollWheel
Scenes 场景
Plane 平面材质
Cuba 立方体
在当前摄像机下利用点击生成射线的函数
Camera.main如果不是使用的初始摄像机
最好还是再新建一个变量来保存摄像机的信息
视频中的Physics.Raycast是一个有两个输出值得函数
out关键字后的那个也是输出
out关键字类似于ref
Transform是一个类,用来描述物体的位置,大小,旋转等等信息。
transform是Transform类的对象,依附于每一个物体。也是当前游戏对象的一个组件(每个对象都会有这个组件)
敌人的生成脚本:
Wave
public Class Wave{}
创建一个NPC调整到合适的位置大小和颜色
取消开始和结束点的碰撞体
//NPC脚本
可以直接使用Unity中自带的寻路系统,烘焙路径!
用做路径的cube要勾选static!
移动物体()需要添加Nav Mesh Agent组件
[System.Serializable] //表示可序列化的,即可以在Inspector面板显示出来
IEnumerator SpawnEnemy(){} //协程
foreach(){} //遍历数组array里的每一个元素
for(){}
GameObject.Instantiate();
yirld return new WaitForSeconds();
void Move(){}
transform.Translate();
positions[index].position
transform.position
noemalized
if(){}
Vector3.Distance()
使用数组来管理路径点。
public static Transform[] positions;
position=new Transform[];
transform.childCount.
for(;;){}
positions.Length,
position[i]=transform.GetChild(i).
Input.GetAxis("");
Horizontal,
Vertical,
Mouse ScrollWheel.
transform.Translate();
new Vector3(),
Time.deltaTime,
Space.World.
private Transform[] positions;
private int index = 10;
void start(){
}
void Update(){
Mave();
}
void Mave(){
}