zoukankan      html  css  js  c++  java
  • CameraFacingBillboard

    原地址:http://www.cnblogs.com/88999660/

    描述

    这个脚本使得它被连接到配合本身相机的对象。这对于要经常面对镜头,并以同样的方式了,因为它是有用的广告牌。

    用法

    将这个脚本上要面对镜头一个游戏对象。然后,选择的对象,请使用检查器来选择要面对的对象的相机。

    你可能想Vector3.back改变Vector3.front,这取决于你的对象的初始方向。

    技术讨论

    请注意,该脚本不只是在相机指向的对象。相反,它使得在相同的方向摄像机的前进轴(即,该方向上的摄像机观察中)的对象点。这似乎是直觉错了,但实际上它是正确的实时计算机图形的单点透视的世界。

    C# - CameraFacingBillboard.cs

    using UnityEngine;
    using System.Collections;
     
    public class CameraFacingBillboard : MonoBehaviour
    {
        public Camera m_Camera;
     
        void Update()
        {
            transform.LookAt(transform.position + m_Camera.transform.rotation * Vector3.back,
                m_Camera.transform.rotation * Vector3.up);
        }
    }

    MODS

    此模块将另外:
    -寻找默认的摄像机在场景中
    建立一个空的“容器”物体做为广告牌的父母,并会旋转此对象来代替。这允许用户在一个预定的旋转分配给该广告牌对象。
    -需要初始化。(刚才设置“autoInit”为“true”)
    外挂作者:juanelo

    / / cameraFacingBillboard.cs V02 
    / /由尼尔·卡特(NCarter)
    / /由胡安·卡斯塔涅达修改(juanelo)
    / / 
    / /在两者之间GRP对象加入到上进行旋转
    / /添加自动找到主摄像头
    / /添加取消初始化状态,其中的脚本将做什么

    using UnityEngine;
    using System.Collections;
     
     
    public class CameraFacingBillboard : MonoBehaviour
    {
     
        public Camera m_Camera;
        public bool amActive =false;
        public bool autoInit =false;
        GameObject myContainer;    
     
        void Awake(){
            if (autoInit == true){
                m_Camera = Camera.main;
                amActive = true;
            }
     
            myContainer = new GameObject();
            myContainer.name = "GRP_"+transform.gameObject.name;
            myContainer.transform.position = transform.position;
            transform.parent = myContainer.transform;
        }
     
     
        void Update(){
            if(amActive==true){
                myContainer.transform.LookAt(myContainer.transform.position + m_Camera.transform.rotation * Vector3.back, m_Camera.transform.rotation * Vector3.up);
            }
        }
    }

    此模块将:
    -寻找场景中的默认的摄像头
    -允许默认轴被指定
    外挂作者:海登·斯科特男爵(坞)

    / / CameraFacing.cs 
    / /原来由尼尔·卡特(NCarter)
    / /由海登·斯科特男爵(码头)的改进型- http://starfruitgames.com 
    / /允许指定的方向轴

    using UnityEngine;
    using System.Collections;
     
    public class CameraFacing : MonoBehaviour
    {
        Camera referenceCamera;
     
        public enum Axis {up, down, left, right, forward, back};
        public bool reverseFace = false; 
        public Axis axis = Axis.up; 
     
        // return a direction based upon chosen axis
        public Vector3 GetAxis (Axis refAxis)
        {
            switch (refAxis)
            {
                case Axis.down:
                    return Vector3.down; 
                case Axis.forward:
                    return Vector3.forward; 
                case Axis.back:
                    return Vector3.back; 
                case Axis.left:
                    return Vector3.left; 
                case Axis.right:
                    return Vector3.right; 
            }
     
            // default is Vector3.up
            return Vector3.up;         
        }
     
        void  Awake ()
        {
            // if no camera referenced, grab the main camera
            if (!referenceCamera)
                referenceCamera = Camera.main; 
        }
     
        void  Update ()
        {
            // rotates the object relative to the camera
            Vector3 targetPos = transform.position + referenceCamera.transform.rotation * (reverseFace ? Vector3.forward : Vector3.back) ;
            Vector3 targetOrientation = referenceCamera.transform.rotation * GetAxis(axis);
            transform.LookAt (targetPos, targetOrientation);
        }
    }
  • 相关阅读:
    Spring data jpa使用枚举
    IO
    Tomcat相关问题
    flex中为控件添加监听器并计算
    导出excel
    webService常见问题
    从指定的路径中查找含有特殊字符串的文件
    flex中日期的格式化
    flex与后台及页面间对象的传递
    打印时有选择的打印
  • 原文地址:https://www.cnblogs.com/123ing/p/3703842.html
Copyright © 2011-2022 走看看