zoukankan      html  css  js  c++  java
  • 摄像机围绕着某一个物体进行漫游并且看着物体

    using UnityEngine;
    using System.Collections;

    public class Slow_Motion : MonoBehaviour
    {

    public Transform motionRoot;
    public Transform Aim;
    int moveIndex = 0;

    public float moveSpeed = 3f;
    float moveNeedTime = 0;
    float timer = 0;

    public Transform motionCamera;
    void Awake()
    {
    ReInitData();
    }


    void Update()
    {
    if (motionRoot != null && motionRoot.childCount > 0)
    {

    if (moveIndex <= motionRoot.childCount - 1)
    {
    timer += Time.deltaTime;
    if (timer < moveNeedTime)
    {
    float progress = timer / moveNeedTime;
    if (motionCamera != null)
    {

    if (moveIndex < motionRoot.childCount - 1)
    {
    //球形插值和直线插值
    //motionCamera.position = Vector3.Slerp(motionWayRoot.GetChild(moveIndex).position, motionWayRoot.GetChild(moveIndex+1).position, progress);
    motionCamera.position = Vector3.Lerp(motionRoot.GetChild(moveIndex).position, motionRoot.GetChild(moveIndex + 1).position, progress);
    }
    else
    {
    //motionCamera.position = Vector3.Slerp(motionWayRoot.GetChild(moveIndex).position, motionWayRoot.GetChild(moveIndex+1).position, progress);
    motionCamera.position = Vector3.Lerp(motionRoot.GetChild(motionRoot.childCount - 1).position, motionRoot.GetChild(0).position, progress);

    }

    motionCamera.LookAt(Aim);
    }
    }
    else
    {
    moveIndex++;
    ReInitData(moveIndex);
    }
    }
    else
    {
    ReInitData();
    }

    }

    }

    void OnDrawGizmos()
    {
    if (motionRoot != null && motionRoot.childCount > 0)
    {
    int c = motionRoot.childCount;
    for (int i = 0; i + 1 < c; i++)
    {
    Debug.DrawLine(motionRoot.GetChild(i).position, motionRoot.GetChild(i + 1).position, Color.green);
    }
    Debug.DrawLine(motionRoot.GetChild(motionRoot.childCount - 1).position, motionRoot.GetChild(0).position, Color.green);
    }
    }

    void ReInitData(int moveIndex_ = 0)
    {
    moveIndex = moveIndex_;
    timer = 0;
    if (motionRoot != null && motionRoot.childCount > 0)
    {
    if (motionRoot.childCount >= 2)
    {
    if (moveIndex < motionRoot.childCount - 1)
    {
    moveNeedTime = Vector3.Distance(motionRoot.GetChild(moveIndex).position, motionRoot.GetChild(moveIndex + 1).position) / moveSpeed;
    }
    else
    {
    moveNeedTime = Vector3.Distance(motionRoot.GetChild(motionRoot.childCount - 1).position, motionRoot.GetChild(0).position) / moveSpeed;
    }

    }
    }
    }
    }

  • 相关阅读:
    django-restframework使用
    django-xadmin使用
    python2.7.5升级到2.7.14或者直接升级到3.6.4
    mysql-5.7.25安装以及使用
    django1.9安装以及使用
    Algorithm negotiation failed
    ELK的搭建以及使用
    python 3.5 成功安装 scrapy 的步骤
    pandas基础-Python3
    C#命名规则和编码规范
  • 原文地址:https://www.cnblogs.com/Study088/p/7245318.html
Copyright © 2011-2022 走看看