第三人称角色移动及自由移动视野(RigidBody实现)

Posted 游戏鼻祖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三人称角色移动及自由移动视野(RigidBody实现)相关的知识,希望对你有一定的参考价值。

重点:向量的运算.在获得水平及垂直方向的速度之后,将方向进行重设,让方向与视野同步(即:相机的方向与人物方向相同)

下面以一个实例来说明如何操作:

1.如图创建一个地形(Terrain),两个正方体(Cube)(参照物),胶囊(Capsule)。把主摄像机放到Capsule下面当作子物体并且重置一下位置信息.

(为了方便观察可以创建几个材质球给物体附上)

2.把摄像机往后来在Game视图下可以达到如图效果即可:

3.创建两个脚本一个用来控制移动另外一个控制视野转动:(我创建的move和freeLook两个脚本)

move脚本内容:

using UnityEngine;
using System.Collections;

public class move : MonoBehaviour {
	public GameObject camer;//相机
	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		Vector3 forward = camer.transform.TransformDirection (Vector3.forward);//记录相机前方向
		Vector3 right=camer.transform.TransformDirection (Vector3.right);//记录相机右方向
		float H = Input.GetAxis ("Horizontal");
		float V = Input.GetAxis ("Vertical");
		Vector3 he = H * right + V * forward;//将速度进行合成
		GetComponent<Rigidbody> ().MovePosition (transform.position+ he * 5 * Time.deltaTime);//控制移动
	}
}

  freeLook脚本内容:

using UnityEngine;
using System.Collections;

public class freeLook : MonoBehaviour {
	public GameObject camer;
	private float speed=5.0f;//转速
	// Use this for initialization
	void Start () {
		
	}
	// Update is called once per frame
	void Update () {
		camer.transform.RotateAround (this.transform.position,Vector3.up,speed*Input.GetAxis("Mouse X"));//相机以人物为中心,自身Y轴进行旋转
	}
}

4.把相机指定到脚本:  

 

以上是关于第三人称角色移动及自由移动视野(RigidBody实现)的主要内容,如果未能解决你的问题,请参考以下文章

Unity 3D - 使用刚体的第三人称角色移动

请问Unity3D中,第三人称视角使用角色控制器的Move函数移动时,怎么实现由鼠标左右移动控制运动朝向?

unity 用角色控制器怎么检测碰撞

AdvancedLocomotionSystemVC++ 实现人物移动

第一人称射击游戏总结概览

unity中2d的角色控制