图集和单一图片
图集可以裁剪成多个图片使用
导入的素材的Texture Type要调成Sprite(2D and UI)
图集还要多把Sprite Mode调成Multiple
用Sprite Editor切割图集
Slice
图集和单一图片
图集可以裁剪成多个图片使用
导入的素材的Texture Type要调成Sprite(2D and UI)
图集还要多把Sprite Mode调成Multiple
用Sprite Editor切割图集
Slice
shift选中多张图片拖入场景,可以直接创建为Animation
会生成一个Animation和一个Animator
选中文件后F2重命名文件
private void FixedUpdate()
{
float v = Input.GetAxisRaw("Vertical");
float h = Input.GetAxisRaw("Horizontal");
if (Mathf.Abs(v) > 0.0f)
{
transform.Translate(Vector3.up * v * moveSpeed * Time.fixedDeltaTime, Space.World);
if (v < 0)
{
sr.sprite = tankSprite[2];
}
else if (v > 0)
{
sr.sprite = tankSprite[0];
}
}
else if (Mathf.Abs(h) > 0.0f)
{
transform.Translate(Vector3.right * h * moveSpeed * Time.fixedDeltaTime, Space.World);
if (h < 0)
{
sr.sprite = tankSprite[3];
}
else if (h > 0)
{
sr.sprite = tankSprite[1];
}
}
}
图层顺序可以自己决定,数值越大,
SpriteRenderer中
Sorting Layer是渲染的大层级
Order in Layer 是大层级下的小层级渲染顺序
Order in Layer越大,越晚渲染,也就是越不会被覆盖
GetkeyDown是(KeyCode. )是键盘输入
敌人AI的编写 重点
1.删掉 isdefended 和effect相关的 没给拖引用会报空
CD 大于等于3,attack删掉空格
move方法 利用v与h的值 随机数,删掉键盘输入
再弄一个计时器 private float timeValChangeDirection;
在外面 private float v;
private float h;
在move方法里写 计时4秒开始 随机变量一到八 大于5时 尽量往下走,概率提高 num==0往回走
0到2区间向左,3到4向右;
重点行动完一次后要对计时归0
计时没到四秒则累加(记得用fixedDeltaTime)
修复一下子弹的脚本 case Enemy
是玩家子弹时 Die 再销毁自身 tank里面也要补一下,再改一下标签
敌人一产生就应有一个转向,所以把计时器初始值=4
加一个:Destroy(gameObject);销毁
地图的实例化
测量四个角与中点的位置 20*16
create empty--MapCreation 新弄一个gameobjevt做地图孵化器 加同名脚本
框架 1.先拿一下预制体
一个数组 public GameObject[] item; 用来装饰初始化地图所需物体的数组
0 heart 1wall 2barrier 3 出生效果 4河流 5 草 6 空气墙 再拖一下预制体
重点 先把脚本(object)的钩消掉再操作
heart 坐标 0,-8 实例化
在awake方法里(因为要先于所有物体)
Instantiate(item[0], new Vector3(0,-8,0), Quaternion.identity(没有旋转角度);
use walls inclose the heart
wall的坐标 上面一排用一个for循环 坐标中x设一个参i(初始=-1),中间记得加分号
ctrl cv
wall中间有缝调大一点 map 都调的3.2
我自己的坐标自己按位置调
每次实例化出来的东西clone就会散落在hierarchy上 让他们产生在mapcreation下
再封装一个方法 private void CreateItem(GameObject createGameObject,Vector3 createPosition,Quaternion,createRotation四元数)
{
用GameObject变量 itemGo来接收它们
再设置成子物体itemGo.transfrom.setParent(gameObject.transform);
}
再把上面的Instantiate全改成CreateItem
易错别把transform写错了
size
学习发布的尺寸的大小与如何发bu
都要有碰撞器,一方要有刚体,最好是运动的
1.Multiple:可切割的图集
1.order in layer:次层级
欧拉角转四元数的api
Quaternion.EulerAngles()旧版本
Quaternion.EulerAngles()新版本
子弹产生的角度:当前坦克的角度+子弹应该旋转的角度
碰撞
两个物体身上有碰撞器
其中一方是刚体 一般在运动的一方上
因为刚体会休眠 就不会发生碰撞jian'c
24节 6.00 防止出现绝对现象。
24节 1.22定义List<Vector3> XX = new List <Vector>();
if(判断应该是两个等号==)
0 8 16 24
Heart 脚本:Die() 拿spriteRander组件