UnityStandardAssets之SmoothFollow

using UnityEngine;

namespace UnityStandardAssets.Utility
{
    public class SmoothFollow : MonoBehaviour
    {

        // The target we are following
        [SerializeField]
        private Transform target;
        // The distance in the x-z plane to the target
        [SerializeField]
        private float distance = 10.0f;
        // the height we want the camera to be above the target
        [SerializeField]
        private float height = 5.0f;

        [SerializeField]
        private float rotationDamping;
        [SerializeField]
        private float heightDamping;

        // Use this for initialization
        void Start() { }

        // Update is called once per frame
        void LateUpdate()
        {
            // Early out if we don‘t have a target
            if (!target)
                return;

            // Calculate the current rotation angles
            var wantedRotationAngle = target.eulerAngles.y;
            var wantedHeight = target.position.y + height;

            var currentRotationAngle = transform.eulerAngles.y;
            var currentHeight = transform.position.y;

            // Damp the rotation around the y-axis
            currentRotationAngle = Mathf.LerpAngle(currentRotationAngle, wantedRotationAngle, rotationDamping * Time.deltaTime);

            // Damp the height
            currentHeight = Mathf.Lerp(currentHeight, wantedHeight, heightDamping * Time.deltaTime);

            // Convert the angle into a rotation
            var currentRotation = Quaternion.Euler(0, currentRotationAngle, 0);

            // Set the position of the camera on the x-z plane to:
            // distance meters behind the target
            transform.position = target.position;
            transform.position -= currentRotation * Vector3.forward * distance;

            // Set the height of the camera
            transform.position = new Vector3(transform.position.x ,currentHeight , transform.position.z);

            // Always look at the target
            transform.LookAt(target);
        }
    }
}
时间: 2024-11-09 20:32:36

UnityStandardAssets之SmoothFollow的相关文章

unity中的update、Lateupdate和FixedUpdate。

MonoBehaviour.Update 更新 当MonoBehaviour启用时,其Update在每一帧被调用. MonoBehaviour.FixedUpdate 固定更新 当MonoBehaviour启用时,其 FixedUpdate在每一帧被调用. 处理Rigidbody时,需要用FixedUpdate代替Update.例如:给刚体加一个作用力时,你必须应用作用力在FixedUpdate里的固定帧,而不是Update中的帧.(两者帧长不同) MonoBehaviour.LateUpdat

Unity模拟龙之谷人物行走简单控制

我个人挺喜欢龙之谷(DN)的人物控制的(不是广告哈....),就是人物太萌了一点,动作.打击感都挺好的. 今天用Unity简单模仿了一下DN的人物控制,当然,游戏里面动作很多,我这里只做了简单的walk和run的测试哈,但是感觉也蛮舒服的,哈哈. 期待的效果:鼠标旋转控制视角位置,滚轮控制镜头缩放.点击一次W键为行走,快速点击两次为奔跑. 1.准给工作: 场景中, 一个Camera.一块地皮.一只Cube 2.镜头的缩放和旋转实现: 看下Camera的组件: 再看下Cube的组件: mousel

Unity3D for iOS初级教程:Part 1/3(上)

转自:http://www.cnblogs.com/alongu3d/archive/ 如果图片看不到,请查看原文 这篇教材是来自教程团队成员 Christine Abernathy, 他是Facebook的开发支持团队的工程师.Unity是最为流行的游戏引擎之一.这是有充分缘由的:Unity有一个让它非常容易上手的强大的可视化编辑器,功能强大,好的社区支持,有吸引力的价格,等等!如果你渴望尝试Unity,没有比这篇教程更适合你的了!在这篇教程中,你会学习如何用Unity创建一个简单的iOS游戏

关于unity中的update、Lateupdate和FixedUpdate

MonoBehaviour.Update 更新 当MonoBehaviour启用时,其Update在每一帧被调用. MonoBehaviour.FixedUpdate 固定更新 当MonoBehaviour启用时,其 FixedUpdate 在每一帧被调用. 处理Rigidbody时,需要用FixedUpdate代替Update.例如:给刚体加一个作用力时,你必须应用作用力在FixedUpdate里的固定帧,而不是Update中的帧.(两者帧长不同) MonoBehaviour.LateUpda

Unity3D使物体运动的程序脚本的使用与说明实现详解

欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多U3D资源.U3D培训视频.U3D教程.U3D常见问题.U3D项目源码,我们致力于打造业内unity3d培训.学习第一品牌. 上回我们说过了如何 使  Unity自带的地形系统,那么这一回来简单的讲解一下如何使用脚本进行控制. 首先,选择GameObject->Create Other->Cube创建一个立方体. 我们将该场景另存为TankWar0.2做好版本控制. 调整正方体和摄像机的位置,大致能在屏幕中看到摄像机

unity的自动寻路之 ------ wayPoint寻路的实现方式

孙广东 2015.6.28 看了看  Unity的官方案例,就顺便看了 wayPoint相关. 效果: WaypointProgressTracker.cs  [固定] WaypointCircuit.cs  [固定] using System; using System.Collections; using UnityEngine; #if UNITY_EDITOR using UnityEditor; #endif namespace UnityStandardAssets.Utility

Unity 学习笔记01

简单的先说说Unity中的比较常用的英语单词,不需要背诵,至少看到能大概想起中文意思即可. 常用英语 . Scripts---存放脚本的目录 scene---存放场景的目录 Horizontal---水平 Vertical---垂直  position---位置 Rotation---旋转Destroy---销毁 Collision---碰撞  Collider---触发  virtual---子类可修改 Load Selection  载入选择    Save Selection  存储选择 

Unity 3D酷跑类游戏场景循环

Unity 3D酷跑游戏场景循环 ////////////////2015/07/05///////////// ///////////////by xbw//////////////////// ///////////////环境 Unity4.6.1////// 经过一上午的学习与实验,终于实现了3D酷跑游戏的场景循环..大喜.遂分享交流,共同学习. 在场景中建两个Plane作为地面,分别命名为Plane1,Plane2: Position 分别设为0,0,50:0,0,150: Scale

unity3D角色代码控制问题

///////////////2015/07/06//////// ///////////////by xbw////////////// //////////////环境 unity4.6.1// 分享一些unity character control 代码:: using UnityEngine; using System.Collections; public class playControl : MonoBehaviour { public float movespeed =10f;