1、unity 一些基础设置。
2、2d场景的搭建。
3、2d动画的
1、unity 一些基础设置。
2、2d场景的搭建。
3、2d动画的
0 8 16 24
那个,子弹是bullet,不是bullect
2D游戏旋转方向与3D游戏方向制作相反,
2D制作我们看到的视野是从屏幕中向外看的视角
2D按旋转按逆时针方向,3D
欧拉角转四元数的api
Quaternion.EulerAngles()旧版本
Quaternion.EulerAngles()新版本
子弹产生的角度:当前坦克的角度+子弹应该旋转的角度
发生碰撞检测的两个必要条件:
两方都要有刚体
其中一方要有刚体,最好是运动的一方(因为刚体如果经常不运动就会发生休眠,这就不会发生碰撞检测了)
2D和3D游戏请使用对应不同的碰撞器(刚体也是)
update方法每一帧占用的时间是不同的,因为会受到系统、电脑性能的影响,所以方法调用的时机间隔就会不均匀.
但是fixedUpdate则是每隔一定周期执行一次
产生抖动的原因:
因为坦克加上了刚体,所以有了受力,再加上在update方法调用的时机不均匀,所以这样受力也就不均匀,从而产生了抖动。
首先说结论:物理模拟放在FixedUpdate中。
原因首先得说FixedUpdate和Update的区别,FixedUpdate是每隔一定的周期执行一次,比如每隔1秒执行30次;Update是每帧之前执行一次,比如一般的FPS为30,也就是1秒有30帧,那么也是1秒执行30次。但是每隔一定的周期执行与系统性能无关,无论系统怎么样,都会1秒执行30次。而帧与系统性能有关,通常受到渲染的影响。比如同样一款游戏,性能好的电脑的FPS是30,差一点的可能只有10。这样Update就不是固定的1秒30次了。
那么为什么物理模拟要放在FixedUpdate中呢?举个例子,A和B相距30米,一个人从A移动到B,在Unity中可能是这样实现的,在Update/FixedUpdate中写个位移函数,每次移动1米。那么对于在FixedUpdate中写,不论电脑怎么样,1秒内执行了30次,这个人从A移动到了B。但是对于写在Update中的情况,如果电脑好,FPS为30,1秒内执行了30次,这个人同样从A移动到了B,但是电脑性能差,FPS为10,1秒执行了10次,这个人只移动了10米。
当然上面只是个例子,说的专业一点就是Update会因为系统性能产生抖动的现象
子弟产生的角度:当前坦克的角度+子弹应该旋转的角度
这里当前坦克的角度就是0吧,所以直接Euler子弹的旋转角度也是可以的吧?
坦克朝着两个物体之间仍会发生抖动,可以解决吗
移动,沿X轴,依世界坐标系移动
transform.translate(transform.right*speed*time.delteTime,Space.World)
参数2坐标系:如果第一个参数是自身参数的话,必须用世界坐标系,否则会移动出错。
子弹角度,转成4元数变量
设置,渲染层级
2个设置,
解决,钢体抖动
2d图片导入 ================
简易人工智能编写
攻击:删除键盘输入,让其在有限时间内自动重复。
移动:
Quaternion.Eulerangles()欧拉角转四元数的API (UNITY旋转栏是欧拉角的度数)
eulerangles属于vector3类别
GetkeyDown是(KeyCode. )是键盘输入
图层顺序可以自己决定,数值越大,
新建 2D Tank 项目
导入package文件(zhi'jie't
定义坦克的攻击方法
按下空格生成子弹