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

    }
    }
    }
    }

  • 相关阅读:
    javaweb 最简单的分页技术
    Jquery选择器小结
    JSON 初探
    C# GridView 的使用
    C# 操作数据库
    Java中String为什么是不可变
    Eclipse使用技巧小结
    Java File类方法使用详解
    JSP基础语法总结
    JSP取得绝对路径
  • 原文地址:https://www.cnblogs.com/Study088/p/7161526.html
Copyright © 2011-2022 走看看