前提・実現したいこと
現在、Unityで物を投げ合うというゲームを作ろうとしています。実現したいことはアイテムごとに持つまでの時間を設けようと思っています。
発生している問題・エラーメッセージ
問題なのは1つのアイテムに対しては時間を設定することができたのですが、UnityのInspectorで別々に設定することができません。
該当のソースコード
PlayerController.script→プレイヤーに付けるスクリプト
bool canGrab;//アイテムを持っているかどうか
public float holdTime;//アイテムを持つまでの時間
void Update(){
if (canGrab){
if (Input.GetKeyDown(KeyCode.E)) {
Invoke("PickUp", holdTime); //holdTime後に"PickUp"関数を実行
}
}
}
pickUp.script→アイテムに付けるスクリプト
GameObject PController;
PlayerController playerController;
public float HTime;//アイテムを持つまでの時間
void Start(){
PController = GameObject.Find("unitychan");
playerController = PController.GetComponent<PlayerController>();
}
void Update(){
playerController.holdTime=HTime; //PlayerControllerスクリプトのholdTimeの値をHTimeに置き換える
}
試したこと
アイテムを何秒か待ったら持つというプログラムをプレイヤー側に実装したので、アイテムごとに変えることができません。なので、プレイヤー側のスクリプトにあるholdTimeをアイテム側のスクリプトのHTimeに置き換えることができないかと思ったので上記のplayerController.holdTime=HTimeを試してみました。結果として数値は変更することができました。しかし、Inspector上でアイテムごとに数値を変更すると、どれか1つの数値しか参照されません。どうしたらよいでしょうか?
補足情報(FW/ツールのバージョンなど)
・Unityのバージョンは2019.4.3f1です。
・PickUpスクリプトにアイテムを持つプログラムが実装されてないと思いますが気にしないで下さい。
・足りない情報がありましたら、教えてください。
回答2件
あなたの回答
tips
プレビュー