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);
        }
    }
  • 相关阅读:
    刷题[CISCN2019 华东南赛区]Web4
    刷题[GWCTF 2019]你的名字
    刷题[b01lers2020]Life on Mars
    刷题[SUCTF 2018]GetShell
    洛谷入门2-分支结构
    洛谷入门3-循环结构:回文质数、斐波那契数列
    洛谷入门3-循环结构:金币、最长连号
    洛谷入门3-循环结构:津津的储蓄计划
    C++类成员初始化方法
    英语听力
  • 原文地址:https://www.cnblogs.com/123ing/p/3703842.html
Copyright © 2011-2022 走看看