[英]Muzzle Flash turns on but doesnt turn off with else statement?
所以這有效
if (Input.GetMouseButtonDown(0))
{
_muzzleflash.SetActive(true);
Ray rayOrigin = Camera.main.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0f));
RaycastHit Hitinfo;
// cast ray
if (Physics.Raycast(rayOrigin, out Hitinfo))
{
Debug.Log("hit" + Hitinfo.transform.name);
}
}
但這行不通嗎?
if (Input.GetMouseButtonDown(0))
{
_muzzleflash.SetActive(true);
Ray rayOrigin = Camera.main.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0f));
RaycastHit Hitinfo;
// cast ray
if (Physics.Raycast(rayOrigin, out Hitinfo))
{
Debug.Log("hit" + Hitinfo.transform.name);
}
}
else
{
_muzzleflash.SetActive(false);
}
這是為什么?
我的想法是GetMouseButtonDown(0)
將在按下時起作用,然后調用我的_muzzleflash
游戲對象。
而且我認為,唯一的不正確的方法就是不按住鼠標單擊。
因此,在第一個示例中,按下會調用此對象。 但是釋放不不會刪除對象,但是按下鼠標時對象甚至不顯示嗎?
是這個對象,但是釋放不會刪除該對象?
這是我的統一項目視圖。
問題是您使用GetMouseButtonDown
而不是GetMouseButton
根據GetMouseButtonDown的文檔,該函數
在用戶按下給定的鼠標按鈕的幀期間返回true。
雖然GetMouseButton的文檔說該函數
返回是否按住給定的鼠標按鈕。
這意味着在您的代碼中,if僅被調用一幀,然后在幾毫秒后被稱為新幀。 由於在新框架中沒有按下鼠標按鈕(它仍然處於按下狀態,但是剛剛被按下的那一刻已經過去了),因此將調用else語句,並停止所有操作。
若要具有所需的行為(按住鼠標時該功能必須仍然為true),請使用GetMouseButton
發生的情況是,槍口閃光燈僅在GetMouseButtonDown返回true的單個幀中處於活動狀態,然后由else
語句將其設置為false。
實際上,我建議不要使用else
語句,而應添加邏輯,使槍口閃光燈在其處於活動狀態100毫秒后保持禁用狀態,或者希望該槍口閃光燈持續運行得很快。
您可以使用input.getmousebuttonup()設置為活動的假...其他明智的使用invoke方法來設置為活動的假
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.