unity进阶篇2-角色的程序写入
如何让角色在2D里移动
如何让角色在2D里移动
设定wsad或者 up/down/left/right为上下左右移动
void Update(){ //获取水平输入 float horizontal = Input.GetAxis("Horizontal"); //获取垂直输入 float vertical = Input.GetAxis("Vertical");
//创建一个Vector2的对象position,用来获取当前角色位置。 Vector2 position = transform.position; //更改position的x坐标值,让它每帧加0.1,update就是一帧一帧循环的。 position.x = position.x + 0.1f*horizontal; position.y = position.y + 0.1f*vertical; //更新位置的数据后,我们需要讲更新后的数据输入到新的位置(更新transform) transform.position = position;}- 明明按下去只增加0.1,为什么速度会这么快呢
由于目前的电脑性能很好,所以一秒可能几百甚至上千帧,如果想要得到我们想要的流畅度和速度就要进行锁帧数
void Start(){//锁帧//只有将垂直同步为0才能锁帧,否则锁帧无效//垂直同步的作用就是显著减少游戏画面撕裂、跳帧,因为画面的渲染不是整个画面一同渲染的,而是逐行或逐列渲染的,能够让FPS保持与显示屏的刷新率相同。QualitySettings.vSyncCount = 0;//设定应用程序帧数为60Application.targetFrameRate = 60;}
- 锁帧了限制了游戏性能,如果想要解放游戏性能并得到我们想要的速度怎么办
利用时间改变每一秒的帧数
例如:
你需要通过将移动速度乘以 Unity 渲染一帧所需的时间来更改移动速度。如果游戏以每秒 10 帧的速度运行,则每帧耗时 0.1 秒。如果游戏以每秒 60 帧的速度运行,则每帧耗时 0.017 秒。如果将移动速度乘以该时间值,则移动速度将以秒表示。
引入一个新的概念 Time.deltaTime 每帧的时间间隔,float 类型
public float Speed = 0.1f;// Update is called once per framevoid Update(){//获取水平输入float horizontal = Input.GetAxis("Horizontal");//获取垂直输入float vertical = Input.GetAxis("Vertical");//创建一个Vector2的对象position,用来获取当前角色位置。Vector2 position = transform.position;//更改position的x坐标值,让它每帧加0.1,update就是一帧一帧循环的。position.x = position.x + Speed*horizontal*Time.deltaTime;position.y = position.y + Speed*vertical*Time.deltaTime;//更新位置的数据后,我们需要讲更新后的数据输入到新的位置(更新transform)transform.position = position;}