尝试制作一个熔岩碰撞器,死亡脚本

本文关键字:碰撞 脚本 一个 | 更新日期: 2023-09-27 18:16:18

目前为止,我的脚本如下。我试图创建另一个对撞机部分的脚本,我试图使它,所以当你碰撞熔岩,它有一个标签命名熔岩,玩家会死。然而,我不能让它调用die函数,我也不能使用OnTriggerEnter(collider,other),因为它给了我一个错误。

using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour
// Player Movement Start
{
    public float speed;
    private Rigidbody rb;
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }
    void FixedUpdate()
    {
        float moveHorizontal = Input.GetAxis("Horizontal");
        float moveVertical = Input.GetAxis("Vertical");
        Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
        rb.AddForce(movement * speed);
    }
            //End of Player Movement Script
    //Pickups Script
    void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.CompareTag("Pick Up"))
        {
            other.gameObject.SetActive(false);
        }
    }
        //End of Pickups Script
    //Health and Death Script
    public float health;                
    public GameObject Ragdoll;             
    public void TakeDamage(float dmg){
        health -= dmg;
        if (health <= 0) {
            Die();
        }
    }
    public void Die() {
        Application.LoadLevel(Application.loadedLevel);
    }
 }
//End of Health and Death script

尝试制作一个熔岩碰撞器,死亡脚本

根据这里的答案,

类成员和结构成员的访问级别,包括嵌套类和结构,默认是私有的。

有了这个逻辑,并且知道OnTriggerEnter(...)必须从MonoBehaviour外部调用,您可能应该显式地将其设置为public

另外,你说你正试图从OnTriggerEnter(...)函数运行你的Die(...)方法,但我没有看到,在你的代码中,它应该看起来如下:

public void OnTriggerEnter(Collider other)
{
    switch (other.tag)
    { 
        case "Pick Up": other.gameObject.SetActive(false);
            break;
        case "Lava": Die();
            break;
    }
}