深圳个人如何做网站设计,高端网站制作开发,开一个网上商城要多少钱,栾城区住房建设局官方网站文章目录 玩家角色脚本字段跟随逻辑 完整代码其他相关文章连接 玩家角色
首先创建一个可用的玩家角色#xff0c;写好移动逻辑#xff0c;如果要使用在Unity商店中购买的资源#xff0c;可以点击Window菜单栏 Package Manager选项#xff0c;来打开Package Manager窗口… 文章目录 玩家角色脚本字段跟随逻辑 完整代码其他相关文章连接 玩家角色
首先创建一个可用的玩家角色写好移动逻辑如果要使用在Unity商店中购买的资源可以点击Window菜单栏 Package Manager选项来打开Package Manager窗口如下所示然后下载你需要的资源。
脚本
新建一个脚本名叫FollowCamera然后将该脚本挂载到Camera上。
字段
我们要创建的跟随摄像机具有平滑移动的功能所以我们需要创建两个字段一个字段用于表示跟随的物体一个字段用于表示摄像机移动的平滑程度。 声明一个Transform类变量target用于指定摄像机要跟随的目标物体注意要声明成public的这样我们可以在编辑器中将目标物体赋值给该变量。 声明一个float类型变量damping用于指定跟随的平滑程度数值越大表示跟随越平滑默认值赋值为1。
public Transform target; // 跟随的目标物体
public float damping 1; // 跟随的平滑程度跟随逻辑
跟随逻辑的代码我们放在LateUpdate() 方法中实现这个方法在每一帧最后被调用。
private void LateUpdate()
{
}在LateUpdate() 方法中首先判断目标物体是否存在是否已经赋值给target变量如果没有目标物体不进行任何操作避免报错。
if (target ! null)
{
}接下来计算摄像机应该移动的向量
// 计算目标位置在屏幕上的坐标
Vector3 targetPosition Camera.main.WorldToViewportPoint(target.position);
// 计算摄像机应该移动的向量
Vector3 delta target.position - Camera.main.ViewportToWorldPoint(new Vector3(0.5f, 0.5f, targetPosition.z));首先使用Camera.main.WorldToViewportPoint()方法将目标物体的位置转换为视口坐标相对于摄像机的屏幕视图比例。 然后通过计算delta向量获得目标物体在视口坐标系下的中心位置与屏幕中心位置之间的偏移量。使用Camera.main.ViewportToWorldPoint()方法将偏移量转换为世界坐标系下的偏移量。
接下来计算目标位置和移动摄像机。
// 计算摄像机的目标位置
Vector3 destination transform.position delta;
// 使用平滑阻尼移动摄像机
transform.position Vector3.Lerp(transform.position, destination, damping * Time.deltaTime);根据计算得到的摄像机的目标位置使用Vector3.Lerp()方法以平滑阻尼的方式将摄像机移动到目标位置。
这样脚本就写好了。可以使摄像机平滑地跟随目标物体并保持目标物体在摄像机的中心位置。通过调整damping变量的值我们还可以控制跟随的平滑程度。
完整代码
using UnityEngine;public class FollowCamera: MonoBehaviour
{public Transform target; // 跟随的目标物体public float damping 1; // 跟随的平滑程度private void LateUpdate(){if (target ! null){// 计算目标位置在屏幕上的坐标Vector3 targetPosition Camera.main.WorldToViewportPoint(target.position);// 计算摄像机应该移动的向量Vector3 delta target.position - Camera.main.ViewportToWorldPoint(new Vector3(0.5f, 0.5f, targetPosition.z));// 计算摄像机的目标位置Vector3 destination transform.position delta;// 使用平滑阻尼移动摄像机transform.position Vector3.Lerp(transform.position, destination, damping * Time.deltaTime);}}
}其他相关文章连接
Unity2D实现左右移动的敌人角色 Unity创建一个可移动的2D角色