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

    }
    }
    }
    }

  • 相关阅读:
    移动MM首届手机软件设计及创意大赛决赛取得圆满成功
    Windows Phone 7 EKB系列文章发布
    EVC3/4项目升级到Visual Studio项目的一些建议
    Windows Phone SDK 7.1 RTM 发布
    Howto: 创建Windows Phone 7自定义控件
    风云再起,7迹由你WP7技术沙龙上海站第二次活动
    Windows Phone Dev Notes如何使用ConnectionSettingsTask 来启动连接设置页面
    【OneNote Mobile】 如何处理便签内容的格式?
    《101 Windows Phone 7 Apps》读书笔记PASSWORDS & SECRETS
    3年MVP路,一颗感恩的心
  • 原文地址:https://www.cnblogs.com/Study088/p/7245318.html
Copyright © 2011-2022 走看看