保存游戏对象层始终以默认值结束 (Unity + VS)



所以,我一直在遵循本指南:https://www.youtube.com/watch?v=RQyfHmf7v9s制作太空射击游戏。

这个想法是"敌人"层下

的两个对象不会碰撞,但是当"玩家"层下的对象与"敌人"碰撞时,它成为"无懈可击"层的一部分,不会与任何东西发生碰撞。

但似乎代码中的一行(这个:(

            gameObject.layer = correctLayer;

每次都将我的对象转换为"默认"图层。这是代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[AddComponentMenu("WaterEffects/ForCamera")]
public class HitHandler : MonoBehaviou {
public int health = 1; //Object health
float invulnTimer = 0.25f; //Time in which the gameObject is invulnerable
int correctLayer; // save the original layer of the object
void start()
{
    correctLayer = gameObject.layer;    
    gameObject.SetActive(true);
}
void OnTriggerEnter2D()
{
    Debug.Log("Trigger!");
    health--;
    invulnTimer = 2f;
    gameObject.layer = 10; //put object in invulnerable layer
}
// Update is called once per frame
void Update()
{
    invulnTimer -= Time.deltaTime;
    if (invulnTimer <= 0)
    {
        gameObject.layer = correctLayer; //returns object to original layer (doesnt work)
    }
    if (health <= 0)
    {
        Die();
    }
}
void Die()
{
    Destroy(gameObject); // Destroys object
}
}

我不知道为什么 start 函数没有保存正确的层,尽管在 Unity 中我已经将对象定义为它们的反射层。

注意:我已经使对象成为运动学并检查了IsTrigger。当第一行提到的代码未使用时,它确实有效。

它应该是 void Start(( 而不是 void start((。
请注意这些大写字母。

最新更新