我有一個正在製作的格鬥遊戲,而且我現在被RayCastAll卡住了,我不確定是什麼原因導致了問題。 我有一個名爲「朋克」的預製,您可以在其中選擇另一個gameObject作爲對手。在名爲「punch」的動畫的第二幀中(您可以在下面看到),我運行一個名爲「PunchHit」的函數來表示一拳可能落在對手身上的確切時刻。它如下:RaycastAll來自預製件不會從另一個預製件接收對撞機
void PunchHit(){
var xPos = transform.position.x;
var yPos = transform.position.y;
// This line renders fine, no matter the gameObjects' facing direction, so it is definitely striking in the right direction
Debug.DrawLine(Pos1,Pos2, Color.white, 1, false);
RaycastHit2D[] hits = Physics2D.RaycastAll(Pos1, Pos2);
foreach(RaycastHit2D hit in hits){
if (hit.collider != null){
if (hit.collider.gameObject == opponent) {
if(hit.collider.gameObject.tag == "Fighter"){
var enemy = hit.collider.gameObject;
Debug.Log("I am " + gameObject.name + " and I hit "+hit.collider.gameObject.name);
enemy.GetComponent<Animator>().Play("smacked", -1, 0f);
enemy.GetComponent<Rigidbody2D>().AddForce(new Vector2(1500 * direction, 2500));
AudioSource audio = gameObject.GetComponent<AudioSource>();
audio.Play();
}
}
}
else{
}
}
}
由於一些奇怪的原因,只有其中一個小塊是可罷工的。如果第二個朋克增加他與第一個的距離,他甚至可以擊中第一個,而不會擊中他,這讓我認爲朋克記錄了從本身引人注目的射線廣播打擊另一個朋克。對於所有的意圖和目的,然而,第二個朋克可能不是第一個存在的,它沒有任何光線註冊它。 在我的physics2d設置中,我創建了2個圖層,稱爲玩家1和玩家2,甚至用該面具施放它什麼也不做。我是否錯過了一些明顯的東西,或者是引擎剛剛出現問題?
Here you can see the problem in action
您能否包含計算/設置'Pos1'和'Pos2'的代碼?目前,您似乎沒有包含所有相關的代碼。 – Serlite
對不起,我已經找到了解決方案,我現在就發佈它 –