プレイヤーがある場所に接触したら罠を発動させたいと思っています。
罠は、罠が飛ぶという単純なもので、Trapsというスクリプトに書きました。
PlayerManagerで、Trapsに書いたTrap1Activate();を呼び出したいのですが「Trap1Activateの定義が含まれていない」というエラーが出ます。
Trapsに書いたTrap1Activate();は定義とは違うのでしょうか。
エラーはこちらの図になります。
Trapsのスクリプトは以下です。
using
1using System.Collections.Generic; 2using UnityEngine; 3 4public class Traps : MonoBehaviour 5 6 7{ 8 public GameObject trap1Switch; 9 public float trapJumpPower;//トラップのジャンプ力 10 11 12 13 Rigidbody2D rigid2D; 14 15 16 private void Start() 17 { 18 rigid2D = GetComponent<Rigidbody2D>(); 19 20 } 21 22 private void Update() 23 { 24 25 void Trap1Activate() 26 { 27 rigid2D.AddForce(Vector2.up * trapJumpPower); 28 29 } 30 } 31 32} 33 34コード
PlayerManagerのスクリプトは以下です。
下のほうにあるトラップジャンプが、罠を発動させたい箇所です。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerManager : MonoBehaviour { //public変数 [Header("横方向速度")] public float xspeed = 8; [Header("ジャンプ力")] public float jumpPower = 1000; public GroundCheck ground;//GroundCheckを貼り付ける public GameManager gameManager;//GameManagerを貼り付ける public LayerMask blockLayer; public Traps trap1; //プライベート変数 private float speed; private bool isGround = false; Animator animator; bool isDead = false; public enum DIRECTION_TYPE { STOP, RIGHT, LEFT, } DIRECTION_TYPE direction = DIRECTION_TYPE.STOP; Rigidbody2D rigidbody2D; private void Start() { rigidbody2D = GetComponent<Rigidbody2D>(); animator = GetComponent<Animator>(); } private void Update() { //接地判定を得る isGround = ground.IsGround(); float horizontalKey = Input.GetAxis("Horizontal"); if(horizontalKey == 0) { //止まっている direction = DIRECTION_TYPE.STOP; animator.SetBool("run", false); } else if (horizontalKey > 0) { //右向きに進む direction = DIRECTION_TYPE.RIGHT; animator.SetBool("run", true); } else if (horizontalKey < 0) { //左向きに進む direction = DIRECTION_TYPE.LEFT; animator.SetBool("run", true); } //スペースボタンでかつ接地していればジャンプ if (Input.GetKeyDown("space") && isGround) { //ジャンプ関数 Jump(); } } private void FixedUpdate() { if(isDead) { return; } switch (direction) { case DIRECTION_TYPE.STOP: speed = 0; break; case DIRECTION_TYPE.RIGHT: speed = xspeed; transform.localScale = new Vector3(1, 1, 1); break; case DIRECTION_TYPE.LEFT: speed = -xspeed; transform.localScale = new Vector3(-1, 1, 1); break; } rigidbody2D.velocity = new Vector2(speed,rigidbody2D.velocity.y); } void Jump() { //上に力を加える rigidbody2D.AddForce(Vector2.up * jumpPower); } private void OnTriggerEnter2D(Collider2D collision) { if (isDead) { return; } if (collision.gameObject.tag == "Trap") { PlayerDie(); } if (collision.gameObject.tag == "Goal") { Debug.Log("ゴール"); gameManager.GameClear(); } if (collision.gameObject.tag == "TrapSwitch1") { trap1.Trap1Activate();//トラップジャンプ } } private void PlayerDie() { isDead = true; rigidbody2D.velocity = new Vector2(0, 0); rigidbody2D.AddForce(Vector2.up * jumpPower); animator.Play("PlayerDie"); CapsuleCollider2D capsuleCollider2D = GetComponent<CapsuleCollider2D>(); Destroy(capsuleCollider2D); gameManager.GameOver(); } } コード
以上よろしくおねがいします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/03/02 08:32