激光射线只跟mapcube碰撞,在mapcube上添加layer,layer选择mapcube;
在buildmanager脚本添加update函数,if(input.getmousebuttondown(0)){
//判断鼠标在不在ui上
if( eventsysytem。current.ispointerovergameboobject()== false)
{
return;
}
}
分析main.screenpointtoray
physics
激光射线只跟mapcube碰撞,在mapcube上添加layer,layer选择mapcube;
在buildmanager脚本添加update函数,if(input.getmousebuttondown(0)){
//判断鼠标在不在ui上
if( eventsysytem。current.ispointerovergameboobject()== false)
{
return;
}
}
分析main.screenpointtoray
physics
1,定义turretdata类,定义炮台相关的属性,其中炮台类型为枚举类型
2,在gameobject下面创建buildmanager来控制炮塔选择,在buildmanager定义公共变量turret,upgrateturret,分别拖入材质。
3,toggleswitch创建点击事件,并与buildmanager中方法绑定,例如:点击lasertoggle然后在底部点击+,将gameobject拖入到脚本框,选择buildermanager中的对应方法onlasertoggle。
4,在buildermanager类中编写点击事件,切换不同炮台的函数
canvas 创建图片,生成canvas-》image,evensystem;
删除image
创建toggle,修改background,set native size重新设置大小
checkmark 选中后的状态,先保持checkmark大小与背景大小一致
alpha改成透明
turretswitch 需要创建一个turret group才能进行单选绑定
提高游戏性能:
Edit->Project Settings->Physics中将不需要碰撞检测或者触发的层级取消勾选,也可以自己自定义层级,设置其与之不需要碰撞检测的层级
//鼠标滚轮缩放
float mouse = Input.GetAxis("Mouse ScrollWhell")
//也可以用Input.GetMouseButtonDown(2)来实现
//表示和预制体关联脱离,预制体有更改不会影响物体
GameObject->Break Prefab Instance
float h = Input.GetAxis("Horizontal"); float V = Input.GetAxis("Vertical"); float mouse = Input.GetAxis("Mouse ScrollWheel"); transform.Translate(-new Vector3(h, mouse*mousespeed , V) * Time.deltaTime * speed, Space.World);
Vector3.Distance(判断两点的坐标)
space.word //世界坐标系移动
WayPoint (lu'jing'dian)
Transform[] (记录点作成数组)
(构造Transform)
transform.childCount(子类的坐标)
transform.getc
Space.World 世界坐标
transform.Translate(new vector3(0,0,0))
移动方法
transform.Translate((position[index].position - transform.position).normalized);
//获取向量方向,将向量单位化只需要其方向
public Wave【】 waves;
public Transform START;
void SpawnEnemy()
{
携程,在Start()中启动方法。waveRate
}
炮塔升级UI
canvas worldspace
这里检测不到碰撞的原因是之前在ProjectSetting设置Physics时禁用了Enemy与除Turret层之外的碰撞,只需将Bullet也设为Turret层即可
在为Toggle选择 OnValueChange 事件选择处理函数时,一定要选择 “Dynamic bool” 部分的函数。
如果选择下面部分的内容,处理函数会一直得到的isON值为True
public class ViewController : MonoBehaviour { public float speed = 1; public float mouseSpeed = 60; void Update() { float h = Input.GetAxis("Horizontal"); float v = Input.GetAxis("Vertical"); float mouse = Input.GetAxis("Mouse ScrollWheel"); transform.Translate(new Vector3(h*speed, mouse*mouseSpeed, v*speed) *Time.deltaTime ,Space.Woeld); } }
课时8 对敌人生成的优化
public class ManageEnemy : MonoBehaviour{
public float spped =10;
}