ロジックとゲームで起こっている動作に関する問題が発生しています。ユニティ、パワーアップの衝突の問題
私はパワーアップを実装したいと思います。このパワーアップは、そのキャラクターを特定の時間だけ停止させます。だから私は彼のスクリプトを無効にして、何もしません。今これは動作していますが、問題は5秒後にスクリプトを元に戻す方法が見つからないということです。キャラクターを2秒間止めたい。
ロジックとゲームで起こっている動作に関する問題が発生しています。ユニティ、パワーアップの衝突の問題
私はパワーアップを実装したいと思います。このパワーアップは、そのキャラクターを特定の時間だけ停止させます。だから私は彼のスクリプトを無効にして、何もしません。今これは動作していますが、問題は5秒後にスクリプトを元に戻す方法が見つからないということです。キャラクターを2秒間止めたい。
あなたのコードが間違っています。 Invoke
を使用してください。
非常に簡単です。
のような...
void ApplyPenalty()
{
yourPauseSystem = true;
Debug.Log("starting penalty..");
Invoke("EndPenalty", 5f);
}
void EndPenalty()
{
yourPauseSystem = false;
Debug.Log(" ...ended penalty");
}
がDebug.Log
文を忘れてはいけない何かを。理想的ApplyPenalty
(及びEndPenaltyが)は、それらゲームオブジェクトON実際
注意。
は実際にそのコードをそのゲームオブジェクトに置きます。ここでは「衝突オブジェクトコード」ではありません。あなたはそれを得る?ペナルティを適用するには、あなたの場合はそう
、それは何かのような..あなたが見る
void OnCollisionEnter(Collision c)
{
if ((c.gameObject.tag == "Character"))
c.GetComponent<YourHerosCode?().ApplyPenalty()
}
でしょうか?
物理層システムを使用する必要があります。文字通りUnityで衝突を起こさせるためにそれを使用する必要があります。あなたは何と衝突することができるものを示すために、...
を「物理グリッド」を使用しなければなりません。あなたのコメントでは、彼らは "衝突しない"と言いますが、あなたは絶対に何かに衝突する(または衝突しない)ことができます。
実際には、EVERYTHINGにはUnityで独自の物理層が必要であることに注意してください。
確かにあなたのヒーロー、敵などはすべて独自のレイヤーを持ちます。
ヒント:確かに「敵の投射物」と「プレイヤーの投射物」にはそれぞれ独自のレイヤーが必要です。
NullReferenceがこの行にある場合は、無効コンポーネントを参照しようとしている可能性があります。gameObject.GetComponent<PlayerControls>().enabled = true;
です。その後、
(スタートでVARを割り当てるようにしてください)コンポーネント
var playerController = gameObject.GetComponent<PlayerControls>();
にして、それを無効に/それを参照し、有効にするためにこれを使用する:
playerController.enable = true; //or false
まあ...でも、あなたは私の言うことを正確にする必要があります。私の友人は、あなたの "ペナルティ"コードの重要なことは、あなたの "ペナルティ"コードでなければなりません。あなたはそのコードをあなたのヒーローに移動する必要がありますか? – Fattie
フェア十分です。楽しみに前進! – Fattie
あなたは絶対に層、私の友人を使用する必要があります!それは絶対必要です。物理層。 – Fattie