質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

解決済

Unityでほかのスクリプト参照

Aya_program
Aya_program

総合スコア0

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

3回答

0評価

2クリップ

4865閲覧

投稿2016/07/11 21:23

編集2022/01/12 10:58

Plefab PA と PB が存在し
Script SA と SB があります

PAにSAとPBをアタッチします
PBにSBをアタッチします
SAのスクリプトよりPAの子オブジェクトにPBが生成されます

このPBからSAのスクリプトを読み込み 変数 を参照したいのですがうまくいかないです

SA のスクリプト

C#

using UnityEngine; using System\.Collections; public class AngelScript : MonoBehaviour { public bool P1db_attckon = false; public bool P2db_attckon = false; private Transform player1; private Transform player2; public GameObject AngelSword; public bool toplayer; // Use this for initialization void Start \(\) { // 始めにプレイヤーの位置を取得できるようにする player1 = GameObject\.FindWithTag\("Player1"\)\.transform; player2 = GameObject\.FindWithTag\("Player2"\)\.transform; } // Update is called once per frame void Update\(\) { if \(P1db_attckon\) { toplayer = true; P1_AttackAngel\(\); P1db_attckon = false; } if \(P2db_attckon\) { toplayer = false; P2_AttackAngel\(\); P2db_attckon = false; } } private void P1_AttackAngel\(\) { GameObject obj = Instantiate\(AngelSword, player1\.transform\.position \+ new Vector3\(0,8f,3f\), player1\.transform\.rotation\) as GameObject; obj\.transform\.parent = this\.transform; } private void P2_AttackAngel\(\) { GameObject obj = Instantiate\(AngelSword, player2\.transform\.position \+ new Vector3\(0, 8f, 3f\), player2\.transform\.rotation\) as GameObject; obj\.transform\.parent = this\.transform; } }

SBのスクリプト

C#

using UnityEngine; using System\.Collections; public class AngelSword : MonoBehaviour { //使いたいメソッドや変数のあるスクリプト名 AngelScript angelscript; //そのスクリプトが使われているGameObjを入れるための物 public GameObject angel; private Transform player; private Transform player1; private Transform player2; private const float waitTime1 = 3; private const float waitTime2 = 5; private const float waitTime3 = 8; private const float waitTime4 = 8\.15f; private float rotationSmooth = 10\.0f; // 回転速度 private float countTime = 0; bool flag = true; public bool debug = false; // Use this for initialization void Start \(\) { angelscript = angel\.GetComponent<AngelScript>\(\); // 始めにプレイヤーの位置を取得できるようにする //player = GameObject\.FindWithTag\("Player"\)\.transform; player1 = GameObject\.FindWithTag\("Player1"\)\.transform; player2 = GameObject\.FindWithTag\("Player2"\)\.transform; } // Update is called once per frame void Update \(\) { if \(angelscript\.toplayer\) debug = true; else debug = false; //毎フレームカウント countTime \+= Time\.deltaTime; if \(countTime < waitTime1\) { } else if\(\(countTime >= waitTime1\) && \(countTime < waitTime2\)\) { //angle変数\(x,y,z\)の数値にTime\.deltaTimeを掛けて毎フレームごとに移動するようにする Vector3 angle = new Vector3\(0, 50f, 0\); transform\.Rotate\(angle\); } else if\(\(countTime >= waitTime2\) && \(countTime < waitTime3\)\) { if \(angelscript\.toplayer\) { // プレイヤーの方向を向く Quaternion targetRotation = Quaternion\.LookRotation\(player1\.position - transform\.position\); transform\.rotation = Quaternion\.Slerp\(transform\.rotation, targetRotation, Time\.deltaTime \* rotationSmooth\); } else { // プレイヤーの方向を向く Quaternion targetRotation = Quaternion\.LookRotation\(player2\.position - transform\.position\); transform\.rotation = Quaternion\.Slerp\(transform\.rotation, targetRotation, Time\.deltaTime \* rotationSmooth\); } // プレイヤーの方向を向く //Quaternion targetRotation = Quaternion\.LookRotation\(player\.position - transform\.position\); //transform\.rotation = Quaternion\.Slerp\(transform\.rotation, targetRotation, Time\.deltaTime \* rotationSmooth\); } else if\(\(countTime >= waitTime3\) && \(countTime < waitTime4\)\) { if \(flag\) { flag = false; if \(angelscript\.toplayer\) { // プレイヤーの方向を向く Quaternion targetRotation = Quaternion\.LookRotation\(player1\.position - transform\.position\); transform\.rotation = Quaternion\.Slerp\(transform\.rotation, targetRotation, Time\.deltaTime \* rotationSmooth\); transform\.Rotate\(new Vector3\(1, 0, 0\), 90\); } else{ // プレイヤーの方向を向く Quaternion targetRotation = Quaternion\.LookRotation\(player2\.position - transform\.position\); transform\.rotation = Quaternion\.Slerp\(transform\.rotation, targetRotation, Time\.deltaTime \* rotationSmooth\); transform\.Rotate\(new Vector3\(1, 0, 0\), 90\); } // プレイヤーの方向を向く // Quaternion targetRotation = Quaternion\.LookRotation\(player\.position - transform\.position\); // transform\.rotation = Quaternion\.Slerp\(transform\.rotation, targetRotation, Time\.deltaTime \* rotationSmooth\); //transform\.Rotate\(new Vector3\(1, 0, 0\), 90\); } } else { if \(angelscript\.toplayer\) { Vector3 direction = \(player1\.transform\.position - transform\.position\)\.normalized; this\.gameObject\.GetComponent<Rigidbody>\(\)\.AddForce\(transform\.up \* 20, ForceMode\.Impulse\); Destroy\(this\.gameObject\.transform\.root\.gameObject, 1f\); } else { Vector3 direction = \(player2\.transform\.position - transform\.position\)\.normalized; this\.gameObject\.GetComponent<Rigidbody>\(\)\.AddForce\(transform\.up \* 20, ForceMode\.Impulse\); Destroy\(this\.gameObject\.transform\.parent\.gameObject, 1f\); } //Vector3 direction = \(player\.transform\.position - transform\.position\)\.normalized; //this\.gameObject\.GetComponent<Rigidbody>\(\)\.AddForce\(transform\.up \* 20, ForceMode\.Impulse\); //Destroy\(this\.gameObject\.transform\.root\.gameObject,1f\); } } }

読み込みたい変数はangelscript.toplayerです
デバックで確認したところ
SAの P1db_attckon を TRUE に変更しても
SBの debug は FALSE のままでした
何か根本的なことで間違っているのでしょうか?

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

urahimono
urahimono

2016/07/11 22:18

いくつか質問させてください。 1\.初期状態として、PAとPBはProjectビュー上にPrefabとして存在して、Hierarchyビュー上にはPAだけが存在する状況で間違いないですか。 2\.PBのSBの変数である`angel`には何のオブジェクトを指定していますか。Projectビュー上のPAを指定しているのでしょうか。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Unity

Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。