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

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

新規登録して質問してみよう
ただいま回答率
85.46%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

0回答

601閲覧

Destoryで消したあと特定のオブジェクトを回転させたい

Nishi3150

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/12/29 05:12

編集2021/12/29 05:16

前提・実現したいこと

KeyというオブジェクトをDestoryで消した後、ObjGetにアタッチしたオブジェクトを回転させるという処理をしたいのですが、下記のスクリプトだとゲームを開始した時点でKeyが消えてしまっていたりしてうまくできません。
ご助言いただけると幸いです。

該当のソースコード

C#
ソースコード
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PickupObj : MonoBehaviour
{
//InspectorにGameObject
public GameObject Key;
public GameObject objGet;

void Start() { //Start関数使わない } // Update is called once per frame void Update() { if (Input.GetMouseButtonDown(0)) Invoke("RotateDoor",2); { Destroy(Key); } } public void RotateDoor() { Transform myTransform = objGet.transform; myTransform.Rotate(0.0f,75.0f,0.0f); }

}

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tsuki01

2021/12/29 05:31

> ゲームを開始した時点でKeyが消えてしまっていたり if文の波かっこの位置が間違っているからではないでしょうか? 「Invoke("RotateDoor",2);」を、if文の波かっこの中にいれればマウスクリック時に消えるようにならないでしょうか。
Nishi3150

2021/12/29 05:43

ありがとうございます。 こういった形に変更したところKeyが消えることはなくなり、Destroyまでは問題なくできたのですが、ObjGetの回転はできませんでした。 ご助言いただけますと幸いです。 { if (Input.GetMouseButtonDown(0)) { Destroy(Key); Invoke("RotateDoor",2); } }
tsuki01

2021/12/29 08:34

> ObjGetの回転はできませんでした。 こちらの環境ですと、コードをコピペして確認したところオブジェクトの回転はしました。 以下についてもう少し具体的な情報を頂けたら、正確な回答が付きやすくなると思います。 ・クリックしてから2秒経っても回転しないのかどうか。また、エラーなどは発生していないか ・「RotateDoor」メソッドは呼ばれているか ・「PickupObj」スクリプトは、どのGameObjectにアタッチされているのか
Nishi3150

2021/12/29 19:49

ご返信ありがとうございます。 わざわざ確認していただいてありがとうございます。 自分のシーンでは、 ・クリックしてから2秒後も回転せず、Consoleでのエラーは確認できませんでした。 ・「PickupObj」スクリプトはKeyオブジェクトにアタッチしています。 ・すいません。「RotateDoor」メソッドが呼ばれているかどうかに関しては、どこの箇所を確認すればよいのかわかりませんでした。 初心者で申し訳ないです。ご助言いただけると幸いです。
tsuki01

2021/12/30 06:03

> ・「PickupObj」スクリプトはKeyオブジェクトにアタッチしています。 Keyオブジェクトに提示されているスクリプトをアタッチしていたんですね。 KeyオブジェクトをDestroyしたタイミングで、提示されているスクリプトは動作しなくなります。なので回転の処理が呼ばれずに停止しているのかなと。 別の空のオブジェクトにスクリプトをアタッチするか、回転の処理は別のスクリプトで行うなどで対処が必要です。 >・すいません。「RotateDoor」メソッドが呼ばれているかどうかに関しては、 RotateDoorメソッドの中に、「Debug.Log("〜")」などでログを出力する処理を追加してご確認ください。 ※上記で記載した通り、Destroyしているため呼ばれないとは思いますが。
Nishi3150

2021/12/31 23:55

返信が遅れてすみません。 どうやら、おっしゃる通りDestroyの処理でスクリプトごときえていたみたいです。 別のGameobjにアタッチしたところうまくいきました!! メソッドが呼ばれているかに関しても親切にありがとうございます。 何度も質問に答えていただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問