我有一個Rigidbody
附加到我的角色控制器和我的敵人。我希望敵人能夠包圍我,讓我陷入困境而不能移動,所以我相應地設置了羣衆財產。與剛體相撞將空氣中的玩家對象相撞
只有一個小問題 - 如果我沒有把我的質量設定得足夠高,當敵人與我相撞的那一刻,我的玩家就會飛入空中。如果我不把敵人的質量定得足夠高,我就可以直接穿過他們。我該如何解決這個問題?以下是播放器的移動代碼:
using UnityEngine;
using System.Collections;
public class CharController : MonoBehaviour {
public float speed;
void Start() {
Cursor.lockState = CursorLockMode.Locked;
}
void Update() {
float translation = Input.GetAxis ("Vertical") * speed;
float strafe = Input.GetAxis ("Horizontal") * speed;
translation *= Time.deltaTime;
strafe *= Time.deltaTime;
transform.Translate (strafe, 0, translation);
if (Input.GetKeyDown ("escape")){
Cursor.lockState = CursorLockMode.None;
}
}
}
如果您包含當前的移動代碼,這對用戶會有所幫助,因爲這可能是解決方案的一個組成部分。 – Serlite
@Serlite我編輯它以包含我的鍵盤移動腳本。該腳本放置在膠囊碰撞器上。敵人也有一個navmesh組件連接到它。 –
您是否考慮過使用像「AddForce()」這樣的物理方法,而不是直接翻譯?你得到這些巨大的物理過度反應的原因是因爲翻譯正在將玩家移動到物理計算之間的敵人身上,從而產生了一個大的反彈力量。如果您使用物理模擬間接移動播放器,則這些問題應該消失。 – Serlite