【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
- 幻術,一行程式碼實現鏤空效果行程
- CSS 奇技淫巧 | 妙用混合模式實現文字鏤空波浪效果CSS模式
- 【譯】CSS遮罩實現過渡效果CSS遮罩
- Ai實現FPS遊戲自動瞄準 yolov5fps自瞄AI遊戲YOLO
- 用Unity實現彈反效果Unity
- Qt實現遮罩效果並可以拖動伸縮QT遮罩
- SVG點選實現動態放大的圓效果SVG
- 微信小程式功能之全屏滾動效果的實現程式碼微信小程式
- Unity Shader 實現雨天的水面漣漪效果Unity
- Unity實現“籠中窺夢”的渲染效果Unity
- Unity——ShaderLab實現玻璃和鏡子效果Unity
- Laravel 小技巧 - 讓路由實現類似 Model::query 的效果Laravel路由
- 視覺還原小技巧!CSS 實現角標效果視覺CSS
- Unity使用DOTween實現金幣飛入效果Unity
- 進階!Cocos Creator 中使用模板測試實現遮罩效果遮罩
- LPL Ban/Pick 選人階段的遮罩效果是如何實現的?遮罩
- unity 實現輪盤方式的按鈕滾動效果Unity
- Canvas實現放大鏡效果完整案例分析(附程式碼)Canvas
- 實現聚焦效果
- 純 CSS 實現縷空遮罩層CSS遮罩
- 基於canvas剪輯區域功能實現橡皮擦效果Canvas
- 動畫合成小技巧!CSS 實現動感的倒數計時效果動畫CSS
- 視覺化學習:實現Canvas圖片區域性放大鏡視覺化Canvas
- 使用Unity著色器實現精靈(Sprite)塗鴉效果Unity
- webgl實現火焰效果Web
- webgl實現故障效果Web
- js實現打字效果JS
- canvas實現波浪效果Canvas
- css 實現打分效果CSS
- Flutter 區域性路由實現Flutter路由
- 線上直播系統原始碼,使用ValueAnimator實現view放大縮小動畫效果原始碼View動畫
- CSS3文字的描邊鏤空效果CSSS3
- Unity5 PBR如何實現天氣系統的雪景效果Unity
- Unity 高清渲染管線 ShaderGraph 實現簡單的表面水流效果Unity