前提・実現したいこと
Unityで2Dアクションを作っている初心者です。
「プレイヤーが接地している」かつ「降ってくるブロックの下にプレイヤーがいる」状態になったら、
「プレイヤーがブロックに潰されてゲームオーバーになる」というスクリプトを作りたいです。
Linecastを使って「プレイヤーが接地している」「降ってくるブロックの下にプレイヤーがいる」
それぞれをboolで判定するスクリプトを書いて、
プレイヤーとブロックのそれぞれのオブジェクトにアタッチし、動かすことはできたのですが、
「別々のスクリプトの判定が同時に有効になったらこれを実行」
というのを、どのスクリプトにどう書いたら良いのかわかりません。
発生している問題・エラーメッセージ
エラーメッセージはありません。
該当のソースコード
プレイヤーのスクリプト
C#
1public class PlayerController : MonoBehaviour 2{ 3 void Update() 4 { 5 bool grounded = 6 Physics2D.Linecast( 7 transform.position, 8 transform.position - transform.up * 0.55f, 9 groundLayer); 10 } 11}
ブロックのスクリプト
C#
1public class FallingBlockController : MonoBehaviour 2{ 3 public void Update() 4 { 5 bool crush = 6 Physics2D.Linecast( 7 transform.position, 8 transform.position - transform.up * 0.6f, 9 playerLayer); 10 11 //ブロックの落下 12 if (transform.position.y > -5.0f) 13 { 14 transform.Translate(0, -0.05f, 0); 15 } 16 else 17 { 18 transform.Translate(0, 0, 0); 19 } 20 } 21}
groundedとcrushが同時に有効になった時、ゲームオーバーのスクリプトを実行させたいです。
試したこと
GetComponentを使ってみたり、GameDirectorを作ったりしましたが、良い方法がわかりませんでした。
補足情報(FW/ツールのバージョンなど)
接地判定に関してはこちらのサイト等を参考にしました。
http://0310unity.hateblo.jp/entry/unity_2d_jump
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/15 05:55
2019/12/15 06:04
2019/12/15 07:03
2019/12/15 07:08
2019/12/15 07:29
2019/12/15 08:17
2019/12/15 12:07
2019/12/15 12:21 編集
2019/12/15 12:41