当前位置:首页 >> 编程语言 >> 【Unity3D赛车游戏优化篇】【八】汽车实现镜头的流畅跟随,以及不同角度的切换,oppor807报价

【Unity3D赛车游戏优化篇】【八】汽车实现镜头的流畅跟随,以及不同角度的切换,oppor807报价

cpugpu芯片开发光刻机 编程语言 2
文件名:【Unity3D赛车游戏优化篇】【八】汽车实现镜头的流畅跟随,以及不同角度的切换,oppor807报价 【Unity3D赛车游戏优化篇】【八】汽车实现镜头的流畅跟随,以及不同角度的切换


👨‍💻个人主页:@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏:Unity游戏demo

⭐🅰️Unity3D赛车游戏⭐

文章目录 ⭐🅰️Unity3D赛车游戏⭐⭐前言⭐🎶(==A==)系统优化——相机的跟随为什么要优化:单个场景镜头多个场景镜头脚本 ⭐🅰️⭐


⭐前言⭐

– 😶‍🌫️版本: Unity2021 😶‍🌫️适合人群:Unity初学者 😶‍🌫️学习目标:3D赛车游戏的基础制作 😶‍🌫️技能掌握:aa


🎶(A)系统优化——相机的跟随
为什么要优化:

代码过于复杂,并且滑轮镜头不适合后续游戏的进行


单个场景镜头
优化如下 //相机跟随功能public void FllowEffect() { //实现从不同的角度切入观看transform.position = target.position * (1 - smoothTime) + transform.position * smoothTime;transform.LookAt(target.parent );smoothTime = (Control.Km_H >=150 ) ? ( Mathf .Abs(Control.Km_H)/150) - 0.85f : 0.45f;}

此时代码放入了LateUpdate里面

1.优点:确实是是是跟随 2.缺点:但是会造成镜头的晃动

改成放入了FixedUpdate里面

原因:FixedUpdate是固定帧执行,精准的实时跟随反而会放大细节


多个场景镜头

设置多个场景的位置

输入管理更新

演示效果

脚本 using System.Collections;using System.Collections.Generic;using UnityEngine;//-------------------------------------//—————————————————————————————————————//___________项目: //___________功能: 相机的管理//___________创建者:_____秩沅_____//_____________________________________//-------------------------------------public class CameraContorl : MonoBehaviour{//目标物体public Transform targetOb;public Transform[] target ;private CarMoveControl Control;public float speed;//相机平滑值public float smoothTime;//镜头的选择public int ChooseIndex ;[Header("----------加速时相机属性-------------")]//加速时的跟随力度[Range(1, 5)]public float shiftOff;//目标视野 (让其显示可见)[SerializeField ]private float addFov;//当前视野private float startView;[Range(1,10)]public float followLerp = 1;[Range(1,10)]public float angleLerp = 1;//为一些属性初始化private void Start(){ startView = Camera.main.fieldOfView; //将相机的开始属性赋入addFov = 30;//获取镜头位置for (int i = 0; i < 3; i++){target[i] = targetOb.GetChild(0).GetChild(i);}}private void Update(){TabViewChoose(); //选择镜头}void FixedUpdate(){CameraAtrribute(); //相机属性显示FllowEffect(); //相机跟随功能FOXChange(); //加速时相机视野的变化}//选择场景private void TabViewChoose(){//按下Tab键时if(InputManager.InputManagerment.TabView)ChooseIndex = ChooseIndex > 1 ? 0 : ChooseIndex+1;}//相机跟随功能private void FllowEffect() {//-------1.镜头的跟随方法一---------//实现从不同的角度切入观看//transform.position = target[ChooseIndex].position * (1 - smoothTime) + transform.position * smoothTime;//速度不同跟随的角度不同//moothTime = (Control.Km_H >= 150) ? (Mathf.Abs(Control.Km_H) / 150) - 0.85f : 0.45f;//-------2.镜头的跟随方法二---------transform.position = Vector3.Lerp(transform.position, target[ChooseIndex].position, Time.deltaTime * speed);transform.LookAt(targetOb );} //加速时相机视野的变化private void FOXChange(){if(Input.GetKey(KeyCode.LeftShift) ) //按下坐标shift键生效{Camera.main.fieldOfView = Mathf.Lerp(Camera.main.fieldOfView , startView + addFov ,Time .deltaTime * shiftOff );}else{Camera.main.fieldOfView = Mathf.Lerp(Camera.main.fieldOfView, startView, Time.deltaTime * shiftOff);}}//相机属性显示private void CameraAtrribute(){//实时速度Control = targetOb.GetComponent<CarMoveControl>();speed = Mathf.Lerp(speed, Control.Km_H / 4, Time.deltaTime);speed = Mathf.Clamp(speed, 0, 55); //对应最大200公里每小时}} ⭐🅰️⭐

⭐【Unityc#专题篇】之c#进阶篇】

⭐【Unityc#专题篇】之c#核心篇】

⭐【Unityc#专题篇】之c#基础篇】

⭐【Unity-c#专题篇】之c#入门篇】

⭐【Unityc#专题篇】—进阶章题单实践练习

⭐【Unityc#专题篇】—基础章题单实践练习

⭐【Unityc#专题篇】—核心章题单实践练习


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!、



协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接