0
所以我試圖用2D射線停止我的遊戲穿過牆壁的激光瞄準鏡。Unity 2D,C#2D Raycast給出奇怪的距離結果
首先,我試着簡單地將激光的終點設置到點。然而,這提供了奇怪的結果,其中生命值似乎處於隨機位置,通常落後於玩家。
我做了調試,以檢查光線投射面臨我想要的方式(雖然我知道調試使用到3D光線投射系統,所以也許我做錯了什麼呢?)
我然後使用嘗試擊中點的距離。當激光撞擊到牆壁時,它正在工作,它改變了它的長度,所以它不會撞到牆上。問題是,它在牆壁之前停下很長時間,而不是在某個特定點上,如果我走近牆壁,線條會發生變化,就好像它正在試圖保持距離牆壁的距離不同。 這可能是一件非常簡單的事情,但我不能爲了解決我的問題而努力。
激光瞄準器在玩家組件層次結構中很深入,其中一些具有規模,我想知道這是否是奇數分割的原因,如果是這樣,如何糾正它。
在此先感謝您的幫助!
using UnityEngine;
using System.Collections;
public class LaserSight : MonoBehaviour {
private LineRenderer Lren;
public void Start() {
Lren = GetComponent<LineRenderer>();
}
public void Update() {
if (Lren.enabled) {
int layerMask = (1 << LayerMask.NameToLayer("Wall")) |
(1 << LayerMask.NameToLayer("Enemies"));
//layerMask = ~layerMask;
RaycastHit2D hit = Physics2D.Raycast(transform.position,
transform.right,
layerMask);
if (hit) {
Lren.SetPosition(1,-hit.point);
//Lren.SetPosition(1, new Vector3(hit.distance, 0, 0));
} else {
Lren.SetPosition(1, new Vector3(100, 0, 0));
}
}
}
}