【unity小技巧】實現FPS武器的瞄準放大效果(UGUI實現反向遮罩,全屏遮擋,區域性鏤空效果)
最終效果
新增兩個材質
鏤空材質
全屏遮擋材質
配置對應材質
這裡鏤空使用一個圓形圖片
ps:注意位置Mask和背景位置不可以調換
瞄準鏡的紋理效果
程式碼控制瞄準開鏡放大效果
public class TelescopicView : MonoBehaviour
{
public float zoomLevel = 2.0f; // 縮放倍數
public float zoomSpeed = 10f; // 縮放速度
private float initialFieldOfView; // 初始視野範圍
private bool isAim;//是否瞄準
public GameObject uiWindow; // UI視窗物件
void Start()
{
// 獲取攝像機的初始視野範圍,預設值為60
initialFieldOfView = Camera.main.fieldOfView;
}
void Update()
{
if (Input.GetMouseButton(1))
{
isAim = true;
uiWindow.SetActive(true); // 啟用UI視窗
}
if (Input.GetMouseButtonUp(1))
{
isAim = false;
uiWindow.SetActive(false); // 失活UI視窗
}
if (isAim)
{
ZoomIn();
}
else
{
ZoomOut();
}
}
//視野平滑放大
void ZoomIn()
{
float targetFieldOfView = initialFieldOfView / zoomLevel; // 計算目標視野範圍
Camera.main.fieldOfView = Mathf.Lerp(Camera.main.fieldOfView, targetFieldOfView, Time.deltaTime * zoomSpeed); // 平滑過渡到目標視野範圍
// 當接近目標視野範圍時,直接設定為目標視野範圍
if (Mathf.Approximately(Camera.main.fieldOfView, targetFieldOfView))
{
Camera.main.fieldOfView = targetFieldOfView;
}
}
//視野平滑縮小
void ZoomOut()
{
Camera.main.fieldOfView = Mathf.Lerp(Camera.main.fieldOfView, initialFieldOfView, Time.deltaTime * zoomSpeed); // 平滑過渡回初始視野範圍
// 當接近初始視野範圍時,直接設定為初始視野範圍
if (Mathf.Approximately(Camera.main.fieldOfView, initialFieldOfView))
{
Camera.main.fieldOfView = initialFieldOfView;
}
}
}
配置引數
效果
完結
贈人玫瑰,手有餘香!如果文章內容對你有所幫助,請不要吝嗇你的點贊評論和關注
,以便我第一時間收到反饋,你的每一次支援
都是我不斷創作的最大動力。當然如果你發現了文章中存在錯誤
或者有更好的解決方法
,也歡迎評論私信告訴我哦!
好了,我是向宇
,https://xiangyu.blog.csdn.net
一位在小公司默默奮鬥的開發者,出於興趣愛好,最近開始自學unity,閒暇之餘,邊學習邊記錄分享,站在巨人的肩膀上,透過學習前輩們的經驗總是會給我很多幫助和啟發!php是工作,unity是生活!如果你遇到任何問題,也歡迎你評論私信找我, 雖然有些問題我也不一定會,但是我會查閱各方資料,爭取給出最好的建議,希望可以幫助更多想學程式設計的人,共勉~
相關文章
- CSS實現鏤空效果CSS
- 如何實現全屏遮罩層效果遮罩
- 用純 CSS 實現鏤空效果CSS
- CSS mask 實現滑鼠跟隨鏤空效果CSS
- 一行程式碼實現 UIView 鏤空效果行程UIView
- 幻術,一行程式碼實現鏤空效果行程
- Ai實現FPS遊戲自動瞄準 yolov5fps自瞄AI遊戲YOLO
- 為app實現漸變的遮罩效果APP遮罩
- javascript實現的放大效果程式碼JavaScript
- CSS 奇技淫巧 | 妙用混合模式實現文字鏤空波浪效果CSS模式
- 【譯】CSS遮罩實現過渡效果CSS遮罩
- css如何實現div全屏效果CSS
- 絕對定位實現全屏效果
- CSS3實現的圓球放大縮小效果CSSS3
- canvas實現的圖片放大鏡效果Canvas
- 實現背景圖片的全屏拉伸效果
- 用Unity實現彈反效果Unity
- 微信小程式scroll-view區域性滾動元件橫向效果實現微信小程式View元件
- Unity遊戲開發技巧集錦2.1.3實現效果Unity遊戲開發
- javascript實現的控制瀏覽器全屏效果 [JavaScript瀏覽器
- jquery實現的背景圖鋪滿全屏效果jQuery
- 微信小程式功能之全屏滾動效果的實現程式碼微信小程式
- js實現的指定區域可編輯高亮效果JS
- SVG點選實現動態放大的圓效果SVG
- Qt實現遮罩效果並可以拖動伸縮QT遮罩
- 滑鼠放在連結上實現字型放大效果
- 利用 OmniGraffle 實現放大鏡標註效果
- Unity實現“籠中窺夢”的渲染效果Unity
- Laravel 小技巧 - 讓路由實現類似 Model::query 的效果Laravel路由
- 視覺還原小技巧!CSS 實現角標效果視覺CSS
- 圖片放大鏡效果實現過程詳解
- Unity Shader 實現雨天的水面漣漪效果Unity
- Unity使用DOTween實現金幣飛入效果Unity
- 線上直播系統原始碼,使用ValueAnimator實現view放大縮小動畫效果原始碼View動畫
- 微信小程式搶紅包實現效果微信小程式
- LPL Ban/Pick 選人階段的遮罩效果是如何實現的?遮罩
- Canvas實現放大鏡效果完整案例分析(附程式碼)Canvas
- unity 實現輪盤方式的按鈕滾動效果Unity