[請益] unity物件會互相穿透

看板GameDesign作者 (柳丁)時間8年前 (2016/01/04 12:16), 8年前編輯推噓6(6025)
留言31則, 12人參與, 最新討論串1/1
如題,小弟是自學新手 照者教學文章製作了太空射擊遊戲後發現 物體給了物理碰撞的設定後還是會穿過彼此 例如我給了player box collider和rigidbody 然後給了遊戲邊界 box collider 當他們相撞時會觸發player的碰撞事件 但是飛機還是會穿過遊戲邊界 而且子彈打到敵人時敵人會扣寫 But子彈會穿透過去... 我就用腳本設定子彈碰到物體會distroy 但我看書上的範例box互撞應該不能穿透才對 不知道這個問題要怎麼解決呢 版本:5.3.1f 勞煩各位幫忙解惑 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.250.188.161 ※ 文章網址: https://www.ptt.cc/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

01/04 13:02, , 1F
邊界也要rigid body吧
01/04 13:02, 1F

01/04 13:03, , 2F
collider只是偵測碰撞用,不會處理碰撞反應
01/04 13:03, 2F

01/04 13:51, , 3F
isTrigger跟isKinematic的狀態?
01/04 13:51, 3F

01/04 13:57, , 4F
我查了網路上的資訊說被撞的可以不用有鋼體
01/04 13:57, 4F

01/04 13:59, , 5F
其他的需要晚上回家看 在上課中
01/04 13:59, 5F

01/04 13:59, , 6F
謝謝各位幫忙><
01/04 13:59, 6F

01/04 14:02, , 7F
給個mesh collider嚇嚇他
01/04 14:02, 7F

01/04 15:17, , 8F
1. destroy 2. 你是Destroy( this )還是Destroy(gameObject)?
01/04 15:17, 8F

01/04 15:23, , 9F
3. 穿透跟Destroy是兩回事, 我這邊只針對Destroy幫找問題
01/04 15:23, 9F

01/04 15:56, , 10F
destroy的部分沒有問題
01/04 15:56, 10F

01/04 15:56, , 11F
從敵人腳本distroy other.gameobject
01/04 15:56, 11F

01/04 15:58, , 12F
目前剩下穿透的問題
01/04 15:58, 12F
※ 編輯: leo88138 (42.74.23.92), 01/04/2016 15:58:36

01/04 16:24, , 13F
你預期的結果是碰撞後反彈而非穿透嗎?
01/04 16:24, 13F

01/04 16:25, , 14F
會不會是collider上忘了加Physic Material?
01/04 16:25, 14F

01/04 17:47, , 15F
想做的部分是 飛機撞到牆壁後不能在前進
01/04 17:47, 15F

01/04 17:48, , 16F
目前撞到會觸發碰撞事件 但飛機會穿過牆壁
01/04 17:48, 16F

01/04 18:35, , 17F
牆上加rigidbody就好了啊
01/04 18:35, 17F

01/04 18:47, , 18F
該不會你飛機的移動是用transform.Translate ?
01/04 18:47, 18F

01/04 18:51, , 19F
移動的物體有rigibody吧?rigibody裡面有鎖定xyz軸的功
01/04 18:51, 19F

01/04 18:51, , 20F
能,通通別打勾,再測試,因為你可能鎖到某個軸向,導致
01/04 18:51, 20F

01/04 18:51, , 21F
無法順利“碰開”物件
01/04 18:51, 21F

01/04 21:43, , 22F
真的 移動是translate...
01/04 21:43, 22F

01/04 21:44, , 23F
這樣會有什麼問題嗎
01/04 21:44, 23F

01/04 21:54, , 24F
translae=忽略物理,直接做位移=不會有碰撞判定
01/04 21:54, 24F

01/04 21:54, , 25F
你需要的是用rididbody.MovePosition()
01/04 21:54, 25F

01/04 21:54, , 26F
然後上面這條請把他放在FixedUpdate()裡面執行
01/04 21:54, 26F

01/05 00:15, , 27F
好的 我研究看看
01/05 00:15, 27F

01/05 09:30, , 28F
還有確定兩者的layer是可以互相碰撞的
01/05 09:30, 28F

01/06 00:16, , 29F
不管是translate或是設定position,都是瞬間移動,會
01/06 00:16, 29F

01/06 00:16, , 30F
穿透也是正常的,要讓剛體正常碰撞,你只能AddForce
01/06 00:16, 30F

01/06 00:21, , 31F
或是簡單點直接用CharacterController來控制
01/06 00:21, 31F
文章代碼(AID): #1MYV8NJ7 (GameDesign)