水平=h Horizontal
垂直=v Vertical
public float moveSpeed=3; //声明一个移速,默认=3
private SpriteRenderer sr; //声明一个私有的SpriteRenderer 常量为“sr”
private void Awake(){
sr=GetComponent<SpriteRenderer>();
}
水平=h Horizontal
垂直=v Vertical
public float moveSpeed=3; //声明一个移速,默认=3
private SpriteRenderer sr; //声明一个私有的SpriteRenderer 常量为“sr”
private void Awake(){
sr=GetComponent<SpriteRenderer>();
}
一、背景设置:
camare-background——黑色
比例——5:4
size——8.5
以上数值可以自己调试
Windows-console
二、素材处理:
Texture Type——调为Sprite(2D and UI)
Sprite Mode:单张图single,图集multiple
三、切割图片
sprite editor-slice-Type{自动、以格子尺寸切割,以格子行量切割}
小窍门:一开始调节方格的大小到合适的尺寸,随后选择以格子尺寸切割
四、保存场景,整理文件夹
关于护盾特效,要想启用一段时间后取消,需要先将其关联与一个游戏物体形成父子关系,再将关联后的护盾特效拉进特效引用之中,而非单独的护盾预制体,否则其特效会一直显示。
order in player 覆盖图片
动画制作小技巧:
选中project面板中需要做成动画的全部图片,然后拖入Hiearchy面板,会自动生成动画(三角形图标的是动画,四个小方块的是动画控制器)
碰撞器的生成
二者都要有碰撞器
其中一方(运动的一方)要有缸体
fixedupdate 物理针
是每一秒受力固定
缸体碰撞受力使物体发生抖动,添加物理针处理
未加物理针
void Update ()
{
float h = Input.GetAxisRaw("Horizontal");
transform.Translate(Vector3.right * h * movespeed * Time.deltaTime, Space.World);
if (h < 0)
{
sr.sprite = tanksprite[3];
}
else if (h > 0)
{
sr.sprite = tanksprite[1];
}
float v = Input.GetAxisRaw("Vertical");
transform.Translate(Vector3.up * v * movespeed * Time.deltaTime, Space.World);
if (v < 0)
{
sr.sprite = tanksprite[2];
}
else if (v > 0)
{
sr.sprite = tanksprite[0];
}
}
添加物理针
private void FixedUpdate()
{
float h = Input.GetAxisRaw("Horizontal");
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];
}
float v = Input.GetAxisRaw("Vertical");
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];
}
}
v、h的控设置优先级,如果没有输入就return
先处理V纵向输入,如果有输入的话(!=0),就不再处理下面的H横向输入,直接return掉
sorting layer层级问题
哈哈哈哈,打了个喷嚏!!!!!!!!!!!!!!!!!!!!!!!!!!1
//封装方法
private void move()
{
//这里面都是move的方法 直接调用就可以
}
quaternion.euler(tranform.eulerangles+bullerangles)
euler欧拉角转四元数
2d是3d的水平镜像,所有角度都是反的
bool默认都是false
为什么刚体要添加在运动的物体上面
为什么触发器要双方都带有触发器的才能正常工作
translate中的世界坐标系与self坐标系的区别
single 处理单张图片
multipie 处理多张小图
碰撞检测
1 添加碰撞器,运动的一方最好有刚体(必须有一方有) 经常性不运动时刚体会休眠
2. 2D与3D 碰撞器不一样
3。最好直接在预制体上操作
4 添加刚体 2D给玩家,记得把重力调为0
把所有map预制体都加上碰撞器(草不用) 小技巧 全选后一起加
穿模问题 碰到map时方向乱套(受到旋转力) 将player刚体中的constraints 勾选Z轴
沿墙走时抖动(帧时间不同问题) 在玩家代码中 添加FixedUpdate(固定物理帧) 把所有有关移动的方法移到里面
并将Tima.deltaTime 改为Tima.fixedDeltaTime注意D大写
Horizontal x轴
Vertical Y轴
移动优先级 两个不同轴的方向键键一起按变成斜着移动
分开两个输入与运动 先执行V(Y) 再执行h(X)加一个判断代码
谁放前面谁优先
先把目前已经写好的控制移动代码们封装为一个(Move)方法 让FixedUpdate里更加整洁,还可以注释一下
2D 渲染层级 图层 特效>玩家 子弹》河流
sorting 大层级 (default) order 小层级 数值越大越在上面 特效 /草/子弹order设为1
添加子弹素材 拖入 Bullet size 331
方法一:
通过素材的图片控制Player的方向转动
Player
private SptiteRenderer srl
Update()
坦克的攻击方法 子弹
Attack() 检测空格下的按下 实例化*注意方法应用 Instantiate(子弹的变量,坦克位置,旋转角度(无旋转))一个子弹
拿到子弹预制体的引用(预制体的)