作者leo88138 (柳丁)
看板GameDesign
標題[請益] 物件會互相穿透
時間Mon Jan 4 12:16:21 2016
如題,小弟是自學新手
照者教學文章製作了太空射擊遊戲後發現
物體給了物理碰撞的設定後還是會穿過彼此
例如我給了player box collider和rigidbody
然後給了遊戲邊界 box collider
當他們相撞時會觸發player的碰撞事件
但是飛機還是會穿過遊戲邊界
而且子彈打到敵人時敵人會扣寫
But子彈會穿透過去...
我就用腳本設定子彈碰到物體會distroy
但我看書上的範例box互撞應該不能穿透才對
不知道這個問題要怎麼解決呢
版本:5.3.1f
勞煩各位幫忙解惑
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.250.188.161
※ 文章網址: https://webptt.com/m.aspx?n=bbs/GameDesign/M.1451880983.A.4C7.html
※ 編輯: leo88138 (60.250.188.161), 01/04/2016 12:17:20
※ 編輯: leo88138 (60.250.188.161), 01/04/2016 12:44:21
1F:推 cjcat2266: 邊界也要rigid body吧01/04 13:02
2F:→ cjcat2266: collider只是偵測碰撞用,不會處理碰撞反應01/04 13:03
3F:→ pepsicola: isTrigger跟isKinematic的狀態?01/04 13:51
4F:→ leo88138: 我查了網路上的資訊說被撞的可以不用有鋼體01/04 13:57
5F:→ leo88138: 其他的需要晚上回家看 在上課中01/04 13:59
6F:→ leo88138: 謝謝各位幫忙><01/04 13:59
7F:推 gino0717: 給個mesh collider嚇嚇他01/04 14:02
8F:→ gyd: 1. destroy 2. 你是Destroy( this )還是Destroy(gameObject)?01/04 15:17
9F:→ gyd: 3. 穿透跟Destroy是兩回事, 我這邊只針對Destroy幫找問題01/04 15:23
10F:→ leo88138: destroy的部分沒有問題01/04 15:56
11F:→ leo88138: 從敵人腳本distroy other.gameobject01/04 15:56
12F:→ leo88138: 目前剩下穿透的問題01/04 15:58
※ 編輯: leo88138 (42.74.23.92), 01/04/2016 15:58:36
13F:→ ysluke: 你預期的結果是碰撞後反彈而非穿透嗎? 01/04 16:24
14F:→ ysluke: 會不會是collider上忘了加Physic Material? 01/04 16:25
15F:→ leo88138: 想做的部分是 飛機撞到牆壁後不能在前進 01/04 17:47
16F:→ leo88138: 目前撞到會觸發碰撞事件 但飛機會穿過牆壁 01/04 17:48
17F:推 wix3000: 牆上加rigidbody就好了啊 01/04 18:35
18F:→ xx1234561: 該不會你飛機的移動是用transform.Translate ? 01/04 18:47
19F:推 syatg951: 移動的物體有rigibody吧?rigibody裡面有鎖定xyz軸的功 01/04 18:51
20F:→ syatg951: 能,通通別打勾,再測試,因為你可能鎖到某個軸向,導致 01/04 18:51
21F:→ syatg951: 無法順利“碰開”物件 01/04 18:51
22F:→ leo88138: 真的 移動是translate... 01/04 21:43
23F:→ leo88138: 這樣會有什麼問題嗎 01/04 21:44
24F:推 akilight: translae=忽略物理,直接做位移=不會有碰撞判定 01/04 21:54
25F:→ akilight: 你需要的是用rididbody.MovePosition() 01/04 21:54
26F:→ akilight: 然後上面這條請把他放在FixedUpdate()裡面執行 01/04 21:54
27F:→ leo88138: 好的 我研究看看 01/05 00:15
28F:推 BSpowerx: 還有確定兩者的layer是可以互相碰撞的 01/05 09:30
29F:→ bearkitten: 不管是translate或是設定position,都是瞬間移動,會 01/06 00:16
30F:→ bearkitten: 穿透也是正常的,要讓剛體正常碰撞,你只能AddForce 01/06 00:16
31F:→ bearkitten: 或是簡單點直接用CharacterController來控制 01/06 00:21