栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

Unity相机跟随第一视角移动

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Unity相机跟随第一视角移动

1.打开unity,新建一个场景,简单做一个胶囊体代表人物

2.给第一人称胶囊体添加如下代码,使其通过上下左右键移动

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class FirstPersonMove : MonoBehaviour {

	//获取轴值的变量
	float h;
	float v;
	//移动速度
	public float  speedH=20;
	//旋转速度
	public float speedV=20;
	
	void Update ()
	{
		//获取轴值
		h = Input.GetAxis("Horizontal");
		v = Input.GetAxis("Vertical");
		//控制移动
		transform.Translate(Vector3 .forward *Time .deltaTime*speedH*v );
		//控制旋转
		transform.Rotate(Vector3.up * Time.deltaTime * speedV*h);
	}
}

3.   如果实现第一人称跟随目标移动,最简单的无代码方法就是调整好相机的位置,使其在第一人称的正后上方,并作为其子物体即可。

但是如果不想使相机称为其他物体的子物体,可以通过代码的方式实现。如下

 新建一个空物体命名为FollowPos,并把之前调整好的相机位置的transfrom的值复制给FollowPos,     

 给相机添加入下代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraController : MonoBehaviour {

	//跟随目标点
	public Transform targetPos;
	//相机看向目标点
	public Transform lookAtPos;
	//临时变量,当前速度
	Vector3 currentV;
	//跟随速度
	public float speed=20;
	void Start () {
		
	}
	void Update ()
	{
		//相机跟随[当前位置目标位置,跟随速度,当前速度,跟随速度]
	    Vector3 tempPos = Vector3.SmoothDamp(transform.position, targetPos.position,ref currentV,speed ) ;

		//将得到的值赋值给相机的位置
		transform.position = tempPos;

		//LookAk 看向目标点
		transform.LookAt(lookAtPos);
	}
}

SmoothDamp函数为平滑阻尼。LookPos为在胶囊体正上方的空物体,物体转向时会看向lookPos。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/901369.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号