尝试制作一个熔岩碰撞器,死亡脚本
本文关键字:碰撞 脚本 一个 | 更新日期: 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;
}
}