簡體   English   中英

標簽在 Unity 中不起作用 C#

[英]Tags not working in Unity C#

我編寫了以下代碼來損壞我的播放器,但它不起作用。 我已經盡可能多地檢查編碼錯誤,我知道我的問題是標簽。 使用 Debug.log 功能,我能夠確認問題不是出在我的 hitboxes 上,並且標簽設置正確。 相同的系統反過來作用於我的玩家射彈來傷害敵人。 但是,在我的播放器上設置時它不起作用。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class DamageToPlayer : MonoBehaviour {

public float damageAmount;


public void OnCollisionEnter(Collision col)
 {
    if(col.gameObject.tag == "Player")
    {

        Debug.Log("nearlyThere");
        PlayerHealth ifPlayer = col.gameObject.GetComponent<PlayerHealth>();
        if(ifPlayer != null)
        {
            ifPlayer.PlayerDamage(damageAmount);

            Debug.Log("TOUCH");
        }

    }
}

這是敵人的代碼。

}



using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class PlayerHealth : MonoBehaviour {
public float PlayerStartHealth;

public float playerHealth;
public Text text;

public void Start () {
    playerHealth = PlayerStartHealth;
}


 public void PlayerDamage(float pAmount)
{
    playerHealth -= pAmount;
    if (playerHealth <= 0)
    {
        EndLevel();
    }
}

public void EndLevel()
{
    Debug.Log("u died m8");
}
public void FixedUpdate()
{
    text.text = playerHealth.ToString();

}

這里有更多信息:兩個調試都沒有出現在控制台上。 我就是這樣知道這個問題的。

}

這是玩家健康碼本身。 我不知道為什么這不起作用。

將以下代碼作為OnCollisionEnter函數的第一行:

Debug.Log("Collision between " + gameObject.name + " and " + 
    col.gameObject.name + " with tag " + col.gameObject.tag);

這將告訴您是否已正確地將DamageToPlayer腳本應用於彈丸,是否已正確標記播放器以及所有對撞機的設置是否正確。

如果您完全沒有收到此消息,則可能是物體行進的速度太快而無法檢測到碰撞。 為避免這種情況,請將RigidBodies的CollisionDetectionMode設置為Continuous或ContinuousDynamic。 但是請記住,這是以性能為代價的。

Debug.Log($"gameObject.name: {col.gameObject.name}  gameObject.tag: {col.gameObject.tag}");

DamageToPlayer.OnCollisionEnter()的第一行嘗試此代碼。

然后,檢查其他對象的名稱和標簽。 您可以檢查碰撞是否正常工作。

如果碰撞正常但標簽與您預期的不同,請更改 object 標簽。 當日志不工作時,您應該檢查兩個游戲對象是否有Collider ,其中一個是否有RigidBody組件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM