日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

功能实现_实现指北针(UI图片)效果

發布時間:2024/3/12 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 功能实现_实现指北针(UI图片)效果 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
using?System.Collections;
using?System.Collections.Generic;
using?UnityEngine;

public?class?Compass?:?MonoBehaviour
{
????public?GameObject?camera;?????????? //3D場景中需要旋轉的物體
????public?Transform?compassSprite;???? //指北針的UI圖片
????private?float?cameraLastEular;????? //攝像機上一幀的歐拉旋轉
????private?float?cameraCurrentEular;?? //攝像機當前幀的歐拉旋轉
????private?float?cameraEularValue;???? //攝像機的歐拉旋轉值
????private?float?compassEularValue;??? //指北針的歐拉旋轉值
????public?int?frameCount=0;????????????//幀的數量
????public?int?frameNumber?=?10;????????//每秒10幀
????public??float?timer;????????????????//計時器
????
????void?FixedUpdate?()
????{
????????cameraEularValue?=?camera.transform.eulerAngles.y;
????????compassEularValue?=?compassSprite.transform.eulerAngles.z;
????????compassEularValue?=?-cameraEularValue;
????????LookNorth();
????}

????void?LookNorth()
????{
????????//上一幀,上一旋轉角度????? **********這里必須為歐拉角,錯誤代碼為下面寫法************
????????cameraLastQua?=?camera.transform.eulerAngles.y;

????????timer?+=?Time.deltaTime;
????????//判斷時間>=一秒/每秒執行的幀數
????????if?(timer?>=?1.0f?/?frameNumber)
????????{
????????????//幀的數量在增加
????????????frameCount++;
????????????timer?-=?1.0f?/?frameNumber;
????????????//下一幀,當前旋轉角度
????????????cameraCurrentQua?=?camera.transform.eulerAngles.y;
????????}

????????//判斷上一幀的旋轉角度和當前幀的旋轉角度是否一樣,讓指北針圖片進行旋轉

????????if?(cameraCurrentQua?!=?cameraLastQua)

????????{

??????????? //當前旋轉角度小于0? 和? 上一幀旋轉角度小于等于0

????????????if?(cameraCurrentEular<0.0f?&&?cameraLastEular<=0.0f)

????????????{

??????????????? //如果當前角度小于上一幀角度

????????????????if?(cameraCurrentEular?<?cameraLastEular)

????????????????{

??????????????????? //指北針使用歐拉角進行旋轉

????????????????????compassSprite.transform.eulerAngles?=?new?Vector3(0.0f,?0.0f,?-compassEularValue);
????????????????}
????????????????else

????????????????{

??????????????????? //最后面乘-1是避免會出現正的角度

????????????????????compassSprite.transform.eulerAngles?=?new?Vector3(0.0f,?0.0f,?compassEularValue*-1);
????????????????}
????????????}

????????????if?(cameraCurrentEular>0.0f?&&?cameraLastEular>=0.0f)
????????????{
????????????????if?(cameraCurrentEular?>?cameraLastEular)
????????????????{
????????????????????compassSprite.transform.eulerAngles?=?new?Vector3(0.0f,?0.0f,?compassEularValue*-1);
????????????????}
????????????????else
????????????????{
????????????????????compassSprite.transform.eulerAngles?=?new?Vector3(0.0f,?0.0f,?-compassEularValue);
????????????????}
????????????}
????????}

????}




????/*?? 這段代碼是錯誤的
????void?LookNorth()
????{

????????//上一幀,上一旋轉角度
????????cameraLastQua?=?camera.transform.rotation;

????????timer?+=?Time.deltaTime;
????????//判斷
????????if?(timer?>=?1.0f/frameNumber)
????????{
????????????//幀的數量在增加
????????????frameCount++;
????????????timer?-=?1.0f?/?frameNumber;
????????????//下一幀,當前旋轉角度
????????????cameraCurrentQua?=?camera.transform.rotation;
????????}

????????//判斷上一幀的旋轉角度和當前幀的旋轉角度是否一樣,讓指北針圖片進行旋轉
????????if?(cameraCurrentQua?!=?cameraLastQua)
????????{
????????????if?(cameraLastQua.y>0.0f?&&?cameraCurrentQua.y>0.0f)
????????????{
????????????????if?(cameraCurrentQua.y?>?cameraLastQua.y)
????????????????{
????????????????????compassSprite.transform.Rotate(0.0f,?0.0f,?compassRotateValue);
????????????????????//compassSprite.transform.localRotation?=?Quaternion.Euler(0.0f,?0.0f,?compassRotateValue);
????????????????????//compassSprite.transform.eulerAngles?=?new?Vector3(0.0f,?0.0f,?compassRotateValue);
????????????????}
????????????????else
????????????????{
????????????????????compassSprite.transform.Rotate(0.0f,?0.0f,?-compassRotateValue);
????????????????????//compassSprite.transform.localRotation?=?Quaternion.Euler(0.0f,?0.0f,?-compassRotateValue);
????????????????????//compassSprite.transform.eulerAngles?=?new?Vector3(0.0f,?0.0f,?-compassRotateValue);
????????????????}
????????????}

????????????if(cameraLastQua.y?<?0.0f?&&?cameraCurrentQua.y?<?0.0f)
????????????{
????????????????if?(cameraCurrentQua.y?<cameraLastQua.y)
????????????????{
????????????????????compassSprite.transform.Rotate(0.0f,0.0f,compassRotateValue);
????????????????????//compassSprite.transform.localRotation?=?Quaternion.Euler(0.0f,?0.0f,?-compassRotateValue);
????????????????????//compassSprite.transform.eulerAngles?=?new?Vector3(0.0f,?0.0f,?-compassRotateValue);
????????????????}
????????????????else
????????????????{
????????????????????compassSprite.transform.Rotate(0.0f,?0.0f,-compassRotateValue);
????????????????????//compassSprite.transform.localRotation?=?Quaternion.Euler(0.0f,?0.0f,?compassRotateValue);
????????????????????//compassSprite.transform.eulerAngles?=?new?Vector3(0.0f,?0.0f,?compassRotateValue);
????????????????}
????????????}
????????}
????}
????*/

}

總結

以上是生活随笔為你收集整理的功能实现_实现指北针(UI图片)效果的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。