zoukankan      html  css  js  c++  java
  • 第三人称角色移动及自由移动视野(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.把相机指定到脚本:  

  • 相关阅读:
    LUOGU P3355 骑士共存问题(二分图最大独立集)
    LUOGU P1453 城市环路(基环树+dp)
    BZOJ 1441 Min (裴蜀定理)
    LUOGU P1342 请柬(最短路)
    LUOGU P1186 玛丽卡
    LUOGU P2580 于是他错误的点名开始了(trie树)
    l洛谷 NOIP提高组模拟赛 Day2
    bzoj 4372 烁烁的游戏——动态点分治+树状数组
    bzoj 3730 震波——动态点分治+树状数组
    hdu 5909 Tree Cutting——点分治(树形DP转为序列DP)
  • 原文地址:https://www.cnblogs.com/lichuangblog/p/6692989.html
Copyright © 2011-2022 走看看