保存gameObject图层总是默认为(Unity + VS)

时间:2017-11-17 09:25:14

标签: c# unity3d visual-studio-2017 layer

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

这个想法是层下的两个对象" Enemy"不会碰撞,但当层下的对象"播放器"与'Enemy"相撞它成为"无懈可击的一部分"不与任何东西碰撞的图层。

但似乎代码中有一行(这一行:)

            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
}
}

我不知道为什么启动功能没有保存正确的图层,即使在统一中我已将对象定义为反射图层。

注意:我已将对象设为Kinematic并检查了IsTrigger。当第一个提到的代码行没有被使用时,它确实有效。

1 个答案:

答案 0 :(得分:1)

应该 void Start() not void start()。
请注意那些大写字母。