游戏制作之人物移动(一)
综述
本次我们主要进行讲解的是游戏开发过程遇到的一些问题,以及想法。
本次主要讲述关于人物移动方式以及人物如何驱动。
主体
内容1:人物移动控制方式
人物移动的方式:据本人了解的。人物移动分为三种。
一种是根据键盘进行控制移动,常见的是wsad和上下左右的键盘控制,比如王者荣耀。
第二种是使用鼠标进行控制,鼠标点击哪里,人物移动到哪里,自动寻找路线,也可以用来做AI,常见的游戏比如英雄联盟等。
第三种就是通过控制平衡来实现角色的移动,这个主要用于移动端游戏的角色控制,比如饥饿的鲨鱼和一些赛车类游戏等,偏向于体感操作。
以下根据这几个方面来讲述。
方式1:键盘控制
通过键盘进行控制角色移动,主要分为两个方面。
首先就是需要读取键盘输入:
horizontal = Input.GetAxis("Horizontal");
vertical = Input.GetAxis("Vertical");
其次就是将读取的数据传给角色,实现移动,移动方式有两种,一是通过改变transform,另一个是通过改变刚体的位置从而实现角色移动。
键盘控制角色的transform移动
对于transform而言,每个物体都是存在transform的,这是用来指示人物。
在这里,我们可以看到,这个transform组件有三个属性,分别是position、rotation和scale。
分别表示位置,旋转和缩放。人物移动主要控制的是位置和转向。
private Transform player;
void Start()
{
player = this.transform;
}
void Update()
{
horizontal = Input.GetAxis("Horizontal");
vertical = Input.GetAxis("Vertical");
if( horizontal !=0 || vertical != 0 )
{
player.Translate(new Vector3(horizontal,0,vertical) * Time.deltaTime * moveSpeed); //这个是时间,每帧执行
}
}
特点
优点:简单方便
缺点:可能会造成穿墙的情况,对于碰撞物体可能会造成抖动现象。
键盘控制角色的rigidbody移动
对于使用刚体,首先获取刚体
void Start()
{
rigidbody = GetObjectComponent<Rigidbody>(gameObject);//获取自身的Rigidbody组件
}
然后通过改变刚体的速度来实现移动
rigidbody.velocity = new Vector3(horizontal,0,vertical) * moveSpeed;//3d,主要改变x和z轴,乘以一个移动速度,这个速度可以自己设置
rb.velocity = new Vector2(xVelocity , xVelocity)* speed; //2d,这个是x和y,没有z。
特点:
优点:可以更好的控制角色位置,方便移动,不会抖动。
缺点:相对transform比价复杂,相比而言比较还是优先考虑的是控制刚体来实现移动。
总结
通过本次博客,主要讲述了如何使用键盘进行控制人物移动。主要是通过刚体和transfrom进行控制。通过这两种控制方式,分别进行了比较分析,总结出了刚体控制比较好,但是直接transform更为简单。