实现相机平滑跟随物体移动

  有时候我们在做第三人称游戏的时候,想让相机平滑的跟随物体移动,下面这些代码就能很快达到这个效果

    

using UnityEngine;
using System.Collections;

public class CameraMover : MonoBehaviour
{
    public Transform follow;//目标的tansform
    public float distanceAway = 5.0f;//表示距离目标后方的距离
    public float distanceUp=2.0f;//目标上方的高度
    public float smooth = 1.0f;//插值系数
    private Vector3 camPosition;//目标的位置
    void LateUpdate()
    {
        //计算出相机应该在的位置
        camPosition = follow.position + Vector3.up * distanceUp - follow.forward*distanceAway;
        //插值到相机应该的位置
        transform.position=Vector3.Lerp(transform.position,camPosition,smooth*Time.deltaTime);

        //一个tranform中的函数,用于使一个物体正对着目标
        transform.LookAt(follow);//理解成看着目标

    }
}
时间: 2024-10-19 08:06:31

实现相机平滑跟随物体移动的相关文章

unity 相机平滑跟随游戏角色

把这个脚本赋给你的摄像机,再把游戏角色赋给character变量,之后就能实现摄像机平滑的跟随player在地球的任一角落了. using UnityEngine; using System.Collections; public class SmoothFollowerObj { private Vector3 targetPosition; private Vector3 position; private Vector3 velocity; private float smoothingT

unity 相机跟随物体(角色)

unity 相机平滑跟随游戏角色 把这个脚本赋给你的摄像机,再把游戏角色赋给character变量,之后就能实现摄像机平滑的跟随player在地球的任一角落了. using UnityEngine; using System.Collections; public class SmoothFollowerObj { private Vector3 targetPosition; private Vector3 position; private Vector3 velocity; private

Unity3d学习 相机的跟随

最近在写关于相机跟随的逻辑,其实最早接触相机跟随是在Unity官网的一个叫Roll-a-ball tutorial上,其中简单的涉及了关于相机如何跟随物体的移动而移动,如下代码:  简单相机移动 可以很容易的理解上述的代码: 在初始化时计算与对应物体的向量差值,然后在LateUpdate中对相机位置进行及时更新,至于为什么要放在LateUpdate,因为LateUpdate是等所有脚本的Update跑完之后 在更新自己的逻辑,这样相机得到物体的位置往往是最新的 .具体可以看 Unity关于脚本生

Unity物体平滑跟随

transform.position = Vector3.SmoothDamp(Vector3 a,Vector3 b, ref Vector3 c, float d); 参数: a:当前位置 b:目标位置 c:当前速度(定义一个变量传入就行了,这个不能更改) d:完成(当前位置 - 目标位置)的距离所花费的时间

Unity3D——相机跟随物体移动

public Transform target; public float moveSmooth=5f; Vector3 offset; void Start () { offset = transform.position - target.position;//获取相对位置 } void Update () { Vector3 targetPostion= offset + target.position; transform.position = Vector3.Lerp(transfor

【Unity 实战记录】(一)摄像机区域内跟随物体

模仿Cinemachined 效果,用Cinemachine可轻松实现,贴代码 1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 5 public class FiveCameraController : MonoBehaviour 6 { 7 8 9 public Transform targetPlayer; 10 11 private Vector3 centerPo

摄像机跟随物体,修复物体遮挡

using System.Collections; public class CamFollowPlayer : MonoBehaviour { public float moveSpeed = 3; public float rotateSpeed = 3; private Vector3 offset; private Transform player; void Awake() { player = GameObject.FindGameObjectWithTag ("Player&quo

OSG 实现跟随节点的相机(转)

本章教程将继续使用回调和节点路径(NodePath)来检索节点的世界坐标. 本章目标: 在一个典型的仿真过程中,用户可能需要从场景中的各种车辆和人物里选择一个进行跟随.本章将介绍一种将摄像机“依附”到场景图形节点的方法.此时视口的摄像机将跟随节点的世界坐标进行放置. ---------------------------------------------------------------------- 概述: 视口类包括了一系列的矩阵控制器(osgGA::MatrixManipulator)

Unity3d中第三人称摄像机跟随的实现

最简单的一种就是先设置好摄像机跟物体的相对距离, 在脚本里就可以由物体的位置,跟相对距离,就可以求出摄像机的位置, 用插值的方法可以让摄像机平滑跟随. 1 public class CamFollow1 : MonoBehaviour 2 { 3 4 private Vector3 offset; 5 public Transform player; 6 7 void Start() 8 { 9 offset = player.position - transform.position; 10