zoukankan      html  css  js  c++  java
  • 摄像机按照自设的路径围绕并朝着某一个物体进行360度旋转

    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;
    }

    }
    }
    }
    }

  • 相关阅读:
    apache、php隐藏http头部版本信息的实现方法
    CentOs 设置静态IP 方法
    PHP如何判断远程图片文件是否存在
    linux删除乱码文件
    Linux基础学习1
    C#——继承
    解决简体输出乱码问题
    简单的Tuple声明和输出
    懒汉式与饿汉式的区别
    Java 反射
  • 原文地址:https://www.cnblogs.com/Study088/p/7161526.html
Copyright © 2011-2022 走看看