Unityでゲームを作っています。
マリオのはてなブロック的なもの(無限にコインが出るようにしたい)を作りたいのですがうまくいきません。
SetActiveを使って、キャラクターがジャンプしたときに**enemy1.SetActive(true)**にすることでコインを出現させることに成功したのですが、2枚目以降を出現させることができません。
1つ目のコインを出現させた後に、インスペクターのEnemy1のCoinオブジェクトが消失してしまうのを改善できれば解決できると思うのですがうまくいきません。か
ブロックから無限にコインを出現させるにはどのようなスクリプトを作ればいいのでしょうか?
もし少しでもわかる方がいましたら教えてください。(_ _)
コインのSetActiveをtrueにした後、2秒後にコインをDestroyするスクリプト
c3
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class GameObjectDestroy : MonoBehaviour 6{ 7 public float time = 2; 8 public GameObject gameObject; 9 10 public GameObject enemy1; 11 12 void Start() 13 { 14 enemy1.SetActive(true); 15 Destroy(gameObject, time); 16 } 17}
キャラクターをコントロールするスクリプト(長々とすいません。必要な情報は**public void Jump()**の部分だけだと思います。)
c#
1using UnityEngine; 2using System.Collections; 3using System.Collections.Generic; 4 5public class Yuko_sum_humanoidController : MonoBehaviour 6{ 7 bool push = false; 8 9 public Vector3 touchStartPos; 10 public Vector3 touchEndPos; 11 public string Direction; 12 bool oneplay; 13 14 const int MinLane = -2; 15 const int MaxLane = 2; 16 const float LaneWidth = 1.0f; 17 const int DefaultLife = 3; 18 const float StunDuration = 0.5f; 19 public int coin = 0; 20 21 CharacterController controller; 22 Animator animator; 23 24 Vector3 moveDirection = Vector3.zero; 25 int targetLane; 26 int life = DefaultLife; 27 float recoverTime = 0.0f; 28 29 public float gravity; 30 public float speedZ; 31 public float speedX; 32 public float speedJump; 33 public float accelerationZ; 34 35 public AudioClip CoinGet; 36 37 public GameObject enemy1; 38 39 public int Coin 40 { 41 get { return this.coin; } 42 set { this.coin = value; } 43 } 44 45 public bool IsStan() 46 { 47 return recoverTime > 0.0f || life <= 0; 48 } 49 50 void Start() 51 { 52 // 必要なコンポーネントを自動取得 53 controller = GetComponent<CharacterController>(); 54 animator = GetComponent<Animator>(); 55 } 56 57 void Update() 58 { 59 if (Input.GetKeyDown("space")) Jump(); 60 61 // 重力分の力を毎フレーム追加 62 moveDirection.y -= gravity * Time.deltaTime; 63 64 // 移動後接地してたらY方向の速度はリセットする 65 if (controller.isGrounded) moveDirection.y = 0; 66 } 67 /////////////////////////////////////////////////////////////////////////////////// 68 public void Jump() 69 { 70 if (IsStan()) return; 71 if (controller.isGrounded) 72 { 73 moveDirection.y = speedJump; 74 AudioSource.PlayClipAtPoint(CoinGet, transform.position); 75 coin++; 76 enemy1.SetActive(true); 77 } 78 } 79
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。