监听输入方向:input.getaxisraw("水平轴or垂直轴")
预设初速speed;
监听输入方向:input.getaxisraw("水平轴or垂直轴")
预设初速speed;
设置一个优先级解决上节课留下来的问题
摄像机地显示在scence地Gizmes中可以找到
场景搭建(就是调整一下相机、size可随意、比例可随意、相机颜色)
2D模式下Texture Type应该调为2DandUI
死亡爆炸特效
Heart脚本的7 8
Born脚本的表面编写
老师讲的生成敌人的思路和以前玩的坦克大战敌人生成的方法不一样。
首先一关最多生成20个敌人,场景中最多有5个敌人。
按下wasd键时,改变坦克旋转角度,不要改变坦克图片;让实例化出的子弹旋转角度等于坦克的旋转角度,这方法比老师教的简单一些。
考试重点
碰撞检测:发生碰撞的两方都要有碰撞体,其中一方要有刚体,还有最好是运动的一方(因为刚体长期不用就会休眠)
碰撞检测有2D和3D的区别 应该对应起来
没有加Boxcllide2D就可以让玩家穿过
遇到的问题是
1玩家会斜着走,玩家体验不理想(改进的方法是player的rigid body上的constriaints的z 轴选上)
2还有碰到别的物体时会有抖动(是因为加上刚体之后在Update中每一帧的受力不同,但是在fixUpdate中就可以每一帧都相同)(改进方法是Player脚本用一个生命周期函数改进FixUpdate也叫固定物理针,然后将所有的方法放到固定物理针中就可以了,就不会发生都懂的情况了,但是也只是解决了大部分问题而已,有些小的问题还要用其他方法解决
玩家按键盘的时候可能会同时按下几个键导致游戏人物斜着z
Quaternion.Euler(); Euler转换为四元数的方法。
transform.EulerAngles,可以获得当前角色的Euler角度。
EulerAngles是Vector3
Sorting Layer 大层级,决定了游戏物体的渲染层级。
Order in Layer 层级的顺序,决定了每个大层级下的层级顺序,数值越大,越后渲染,就是不会被
Input.GetAxisRaw(); 比 Input.GetAxis():
具体的区别不清楚,但是在测试时无意间发现,前者比后者接收的按键的速度更快的样子,在按键时图片的切换功能,使用了后者的话,明显感觉到了延迟感。
原来前者是返回的只有0或1,-1,而后者是包含之间的小数点。
面板上的角度为欧拉角度:应该转为四元角度
碰撞:
1.两个物体都加碰撞器
2.动的物体加上刚体
Order in Layer越大越后渲染
碰撞添加,两个关键组件
boxcollider2d 碰撞检测
rigidbody2d 二维刚体
固定物理桢(防抖,按照每帧运行,)
private void FixedUpdate()
定义一个精灵类型的数组:
private SpriteRenderer sr;
public Sprite[] tankSprites;
精灵
if (h<0)
{
sr.sprite = tankSprites[3];
}else if(h>0 )
{
sr.sprite = tankSprites[1];
}
if (v < 0)
{
sr.sprite = tankSprites[2];
}else if (v>0)
{
sr.sprite = tankSprites[0];
}
引用游戏组件的时候有一定要在star方法里面获取它,不然会导致空zhejia
使用自身方向 第二个参数要使用space.world
关于护盾特效,要想启用一段时间后取消,需要先将其关联与一个游戏物体形成父子关系,再将关联后的护盾特效拉进特效引用之中,而非单独的护盾预制体,否则其特效会一直显示。
Destroy(collisio.gameObject);为销毁掉接触的物体,Destroy(gameObject);为销毁掉物体自身。