项目实训-----unity多人游戏开发----第三篇

综述

本次我们主要进行讲解的是游戏开发过程遇到的一些问题,以及想法。
本次主要讲述关于人物移动方式以及人物如何驱动。

主体

内容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更为简单。

猜你喜欢

转载自blog.csdn.net/qq_53259920/article/details/125113110
今日推荐