2017-11-17 6 views
0

として終わります。節約ゲームオブジェクト層は、常にデフォルトだから、私はこのガイド、次のしてきた(ユニティ+ VS)

「敵」の下にある2つのオブジェクトが衝突しないという考えがありますが、レイヤー「プレーヤー」の下のオブジェクトが「敵」と衝突すると、何も衝突しない「無敵」レイヤーの一部になります。

が、コードの1行(この1つは:)

  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

これは、である必要があります。void Start() void start()。
大文字に注意してください。

+0

ありがとう、私はとてもばかげています。私は何時間もそれをしてきたと信じています。大文字... –

+0

これまでにデバッグはあなたの友人です。問題がある場合は、まずコードに到達した場所を確認してください。そのVS +ユニティ以来 – joreldraw

+0

@joreldrawはありえない作業をデバッグする(ゲームがUnityとVSであることからすると、ちょうどそれを書くためである)ようだ、または私は何かが欠けている可能性があります。 –

関連する問題