Unity3D - 追蹤螢幕外物件 與 座標系轉換 (ㄧ)

今天遇到了需要追蹤當物件離開裝置螢幕外,也就是Unity場景的Camera看不見物件時候,需要提示的問題

大體來說會像大部分第一人稱線上動作或是角色扮演遊戲一樣需要做任務角色所在的位置導引

只是這邊是指在同一張地圖的情形

首先要最簡單的做法就是使用 MonoBehaviour 繼承之後的方法進行物件進入/離開場景相機的動作

你可以參考下面這段 GameObjectVisible.cs 程式碼,進行簡單的測試:

using UnityEngine;
using System.Collections;

[RequireComponent (typeof(Renderer))]
public class GameObjectVisible:MonoBehaviour{ 

	//物體進入相機視野時觸發 
	void OnBecameVisible() 
	{ 
		Debug.Log ("OnBecameVisible ==="+gameObject.name); 
	} 

	//物体離開相機視野時觸發 
	void OnBecameInvisible() 
	{ 
		Debug.Log ("OnBecameInvisible ==="+gameObject.name); 
	} 

	//物体在相機視野時觸發 
	void OnWillRenderObject() 
	{ 
		Debug.Log ("OnWillRenderObject ==="+gameObject.name); 
	} 
} 

比較值得注意的是

  1. 要使用這個方法一定要目標物件擁有Renderer的Component
  2. 再者是,建議Cast Shadows 關閉,會得到比較精準的結果(下圖例為新增Cube)

做完這件事之後,你就可以接著處理當畫面裡看不到物件時,顯示提示/圖示的效果了

在此先簡單紀錄,下一篇文章見 

2016/08/25追記:這邊也有中國網友對於此需求的一些討論 http://www.ceeger.com/forum/read.php?tid=18234&fid=2&page=1

 


感謝觀看,若你能夠留下一些建議與感想
都會成為我寫文章的動力,感謝!!