[請益] unity是否可滿足不同scrips的兩個條件?

看板GameDesign作者 (rede1420)時間6年前 (2017/11/30 22:53), 編輯推噓8(805)
留言13則, 10人參與, 6年前最新討論串1/1
對不起我又來了 這次想實現的是一個若車子闖了紅燈就會被扣分的設置 以下是設置碰撞後會扣分數的程式碼 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Score : MonoBehaviour { public int score = 100; public Text scoreText; // Use this for initialization void Start() { } // Update is called once per frame void Update() { scoreText.text = ((int)score).ToString(); } void OnTriggerEnter(Collider aaa) //aaa為自定義碰撞事件 { if (aaa.gameObject.name == "Boom") //如果aaa碰撞事件的物件名稱是 CubeA { score -= 32; } } } 這邊是紅綠燈設置的程式碼 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Tflc : MonoBehaviour { public Light Red; public Light Green; public Light Yellow; // Use this for initialization void Start() { StartCoroutine(Example()); } IEnumerator Example() { Yellow.enabled = false; while (true) { Green.enabled = true; Red.enabled = false; yield return new WaitForSeconds(10); Yellow.enabled = true; Green.enabled = false; yield return new WaitForSeconds(4); Red.enabled = true; Yellow.enabled = false; yield return new WaitForSeconds(10); } // Update is called once per frame } } 我想要實現車子在紅燈是造成碰撞時才會被扣32分 之前有找到一個寫法如下 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Score : MonoBehaviour { public int score = 100; public Text scoreText; public Tflc game; // Use this for initialization void Start() { } // Update is called once per frame void Update() { scoreText.text = ((int)score).ToString(); } void OnTriggerEnter(Collider aaa) //aaa為自定義碰撞事件 { if (game.Red.enabled == true || (aaa.gameObject.name == "Boom")) { score -= 32; } } } 但是他不會扣分 想請教大家unity有辦法讓碰撞事件同時滿足這兩個條件嗎 要怎麼改寫才能實現我的需求 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.69.177 ※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1512053607.A.0C7.html

11/30 23:38, 6年前 , 1F
你先確認到底有沒有進OnTriggerEnter吧
11/30 23:38, 1F

11/30 23:41, 6年前 , 2F
目前測試過了車子受到碰撞確實會扣32分,
11/30 23:41, 2F

11/30 23:42, 6年前 , 3F
但是加了紅綠燈的條件之後就不會扣分了
11/30 23:42, 3F

12/01 00:12, 6年前 , 4F
有個東西叫Debug.log 還有個東西叫breakpoint 都很好用,
12/01 00:12, 4F

12/01 00:12, 6年前 , 5F
你不試試嗎?
12/01 00:12, 5F

12/01 01:02, 6年前 , 6F
進入判斷式if之前用Debug.log檢查那兩條件的狀態
12/01 01:02, 6F

12/01 09:51, 6年前 , 7F
把||改成&&?
12/01 09:51, 7F

12/01 10:26, 6年前 , 8F
你的寫法只有碰撞Boom成立的時候才會成立
12/01 10:26, 8F

12/01 12:41, 6年前 , 9F
可以把CODE移到HackMD之類的地方嗎 用PTT我真的懶得看
12/01 12:41, 9F

12/01 12:48, 6年前 , 10F
collider 可以開關喔!
12/01 12:48, 10F

12/01 19:06, 6年前 , 11F
沒有用到的function可以刪掉嗎XD (start)
12/01 19:06, 11F

12/04 00:25, 6年前 , 12F
Score腳本上有設定Tflc game是用誰嗎
12/04 00:25, 12F

12/04 00:26, 6年前 , 13F
我猜是game == null 然後直接game.Red null reference
12/04 00:26, 13F
文章代碼(AID): #1Q81jd37 (GameDesign)