我有一名玩家和一些NPC。 NPC有隨機動作,我控制着球員的動作。他們都有處理物理的RigidBody2D和處理碰撞的BoxCollider2D。Unity:停止RigidBody2D互相推送
但是,當我走進一個NPC時,我的播放器將它推開。如果NPC在球員靜止時進入我的球員,那也是一樣。
我無法將對象的質量設置爲某個極端數,因爲這會干擾我們在遊戲中與其他對象的行爲。
我想要什麼: 當NPC與玩家碰撞,全國停止(如果設置了播放器質量前我得到這個效果1000,但隨後玩家可以推動人大,我不想。 ),NPC扮演着「牆」的角色,即它不會移動,但是玩家也不能將它推開。我怎樣才能做到這一點?
編輯:所以,我創建了自己的方法就可以了:
void OnCollisionEnter2D(Collision2D other){
if (other.gameObject.name == "Player") {
collidedWithPlayer = true; //we only move if !collidedWithPlayer
isMoving = false; //stop moving
myRigidBody.mass = 1000; //turn NPC into "wall"
}
}
void OnCollisionExit2D(Collision2D other){
if (other.gameObject.name == "Player") {
collidedWithPlayer = false;
waitCounter = waitTime; //stop NPC from starting to move right after we exit
myRigidBody.mass = 1;
}
}
我的意思是這工作,但有沒有做到這一點沒有原生的方法?