void Update ()
{
if(Input.GetKey(KeyCode.Mouse0))
{
Destroy (gameObject);
}
}
目前出現的情況是我點擊螢屏任意地方這個object都會消失 我想要的是只在點擊這個物體的時候他才會消失 應該怎么做呢?
uj5u.com熱心網友回復:
射線檢測http://blog.csdn.net/weiming8517/article/details/52854220
uj5u.com熱心網友回復:
Physics.Raycastuj5u.com熱心網友回復:
加個碰撞器,然后注冊事件,別放在update里uj5u.com熱心網友回復:
你的代碼是:如果檢測到滑鼠左鍵按下,就摧毀GO。
uj5u.com熱心網友回復:
用射線檢測,擊中洗掉uj5u.com熱心網友回復:
foreach (Touch t in Input.touches)//遍歷觸摸事件
{
RaycastHit hit;//射線碰撞資訊
Ray ray = Camera.main.ScreenPointToRay(t.position);
if (t.phase == TouchPhase.Began)//若碰撞開始
{
kzflag = true;//開始控制
if (Physics.Raycast(ray, out hit))//發生射線碰撞
{
if(hit.transform.gameObject.layer==8)//碰到背景層
{
Instantiate(yanwu,hit.point,hit.transform.rotation);//實體化煙霧
}
if (hit.transform.gameObject.layer == 17)//碰到金屬層
{
Instantiate(huohua, hit.point, hit.transform.rotation);//實體化火花
}
if (hit.transform.gameObject.name == "GameStart")//碰到開始游戲
{
fyflag = 2;//翻頁標志位
//return;
}
}
if (hit.transform.gameObject.name == "GameStart")這一句是重點
uj5u.com熱心網友回復:
你這個代碼 是檢測到滑鼠點擊就消失可以考慮射線碰撞檢測 但是性能消耗大
碰撞事件可以
uj5u.com熱心網友回復:
射線或者碰撞 看了別人的回復 要說的都基本說完了 。。。uj5u.com熱心網友回復:
系統有點擊事件的介面uj5u.com熱心網友回復:
在它身上掛一個腳本 在OnClick(){Destroy(ths.GameObject)
} 函式里寫銷毀
uj5u.com熱心網友回復:
我記得NGUI中可以在物體上上任意一個腳本上 重寫OnClick就可以 3D物體也能這樣不過學習的話還是用射線比較好
還有 就算是用NGUI里的OnClick 也繞不過遍歷或者射線
所以 先實作再說 優化效率問題先暫緩
uj5u.com熱心網友回復:
射線方式:void Update(){
//Ray射線類,使用攝像機的一個方法創建從攝像機到滑鼠點擊地方的一條射線(不可見)如果需要看到這個射箭的話,你可以弄個有線渲染器Line Renderer的射線物體
Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);
//物理類的一種測驗射線方法,ray為上面創造的射線 射線碰到的點的一些資訊就存放在hit里面
if(Physics.Raycast(ray,out hit)){
//點擊物體后判斷是否是Object標簽的物體.是的話就洗掉.
if(hit.collider.tag=="Object" && Input.GetMouseButtonDown(0))
{
GameObject.Destroy(hit.collider.gameObject);
}
}把這個腳本放在攝像機上面,或者一些物件上面,但是不能放在洗掉的物體上。
uj5u.com熱心網友回復:
把物體tag設定為objectvoid Update(){
//Ray射線類,使用攝像機的一個方法創建從攝像機到滑鼠點擊地方的一條射線(不可見)如果需要看到這個射箭的話,你可以弄個有線渲染器Line Renderer的射線物體
Ray ray=Camera.main.ScreenPointToRay(Input.mousePosition);
//物理類的一種測驗射線方法,ray為上面創造的射線 射線碰到的點的一些資訊就存放在hit里面
if(Physics.Raycast(ray,out hit)){
//點擊物體后判斷是否是Object標簽的物體.是的話就洗掉.
if(hit.collider.tag=="Object" )
{
GameObject.Destroy(hit.collider.gameObject);
}
}
uj5u.com熱心網友回復:


把這個腳本掛在要消失的物體上,在Game場景里點擊物體就實作了。
uj5u.com熱心網友回復:
注意,hit.collider.name就是物體的名字,這個不用設定tag.uj5u.com熱心網友回復:
沒分了。!!uj5u.com熱心網友回復:
射線檢測最簡便,直接用hit.point,通過tag來判斷uj5u.com熱心網友回復:
這個上網搜射線檢測就能解決
uj5u.com熱心網友回復:
你可以試試滑鼠事件。定義一個標志位,然后滑鼠進入處于物體上,就true,離開就false。
點擊滑鼠,如果是true狀態,就GG;
你現在這個腳本意思是,點擊滑鼠,物體消失。。。
uj5u.com熱心網友回復:
可以給它加個腳本,里面寫OnMouseDown( Destroy(this)); 好像是這樣,可以再查一下,哦對還得給這物體加個碰撞器組件轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/54813.html
標籤:Unity3D
上一篇:fbx模型如何帶著貼圖匯出?
