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

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

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

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

Unity

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

Q&A

解決済

4回答

1496閲覧

objectを回転させたい

YukioMaki

総合スコア21

C#

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

Unity

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

0グッド

0クリップ

投稿2017/12/11 03:18

出現させたObjectを回転させたくて下記のスクリプトを書いてみたのですが回転しません。
何処を訂正すれば良いのか教えてください。

...

using UnityEngine;
using System.Collections;

public class Stage : MonoBehaviour {
public GameObject CristalPrefab;

// Use this for initialization void Start () { obj = CristalPrefab; } // Update is called once per frame void Update () { } void OnGUI() { float sizeX = 200; float sizeY = 30; float x=Screen.width / 2 + sizeX * 2; float y = Screen.height / 2 + sizeY * 3; if(GUI.Button(new Rect(x, y + sizeY * 4, sizeX, sizeY), "スタート")) { Instantiate(CristalPrefab, new Vector3(0, 0, 0), Quaternion.identity); transform.Rotate(new Vector3(0, 1, 0)); } }

}

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

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

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

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

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

guest

回答4

0

C#

1GameObject cristalobject = Instantiate(CristalPrefab, new Vector3(0, 0, 0), Quaternion.identity) as GameObject; 2 3cristalobject.transform.Rotate(new Vector3(0, 1, 0));

これでどうですか?

追記

C#

1public GameObject CristalPrefab; 2 3 private GameObject objee; 4 5 void Update() 6 { 7 if (Input.GetKeyDown(KeyCode.A) && objee == false) 8 { 9 objee = Instantiate(CristalPrefab, new Vector3(0, 0, 0), Quaternion.identity) as GameObject; 10 } 11 12 if(objee) 13 { 14 objee.transform.Rotate(new Vector3(0, 1, 0)); 15 } 16 }

こんな感じにしてみました。 if内がInput.getkeydownになっていますが、Input.getkeydownの部分は変えても大丈夫です。でも&& objee == falseは必要なので消さないでください

C#

1if(GUI.Button(new Rect(x, y + sizeY * 4, sizeX, sizeY), "スタート") && objee == false) 2{ 3    //処理 4}

投稿2017/12/11 03:30

編集2017/12/11 08:53
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

YukioMaki

2017/12/11 04:26

Coogahさん返答ありがとうございます。 Coogahさんのスクリプトをコピーして訂正したのですが、残念ながら回転してくれません。 他にいじらなければならない箇所はないでしょうか。
退会済みユーザー

退会済みユーザー

2017/12/11 04:40 編集

if(GUI.Button(new Rect(x, y + sizeY * 4, sizeX, sizeY), "スタート")) { //処理 } この部分はinput.getkeydownのように一瞬だけ処理をするのか、 それとも条件が揃っていれば常に処理をするのか 教えてもらえますか?
退会済みユーザー

退会済みユーザー

2017/12/11 05:06

とりあえず回答に追記しました
Bongo

2017/12/11 05:07

想像するに、「スタート」ボタンを押すとオブジェクトが現れ、そのオブジェクトは以後一定の速さ(毎フレームY軸周り1°とか)で回転し続ける...という感じではないでしょうか(YukioMaki さん、意図を読み違えていたらご指摘願います...)。
Bongo

2017/12/11 05:08

すみません、お返事のタイミングとかぶってしまいました。
YukioMaki

2017/12/11 08:14

返事が遅くなってすいません。 構想ではシーン場のスタートボタンを押したらオブジェクトのクリスタルが現れ、一定期間回転したら消えるようにするつもりだったのですが、デストロイを仕込む前に回転がしなくて困っている状態です。
Bongo

2017/12/11 08:41

クリスタルの自律的な振るまい(毎フレーム少しずつ回る、一定時間で自分自身を削除する、など)は別スクリプトにしてあらかじめクリスタルプレハブにアタッチしてしまい、Stageはクリスタルをインスタンス化するだけ...というのも一案かもしれませんね。
退会済みユーザー

退会済みユーザー

2017/12/11 08:55

確かにそのやり方が一番わかり易いかもしれませんね クリスタルに回転・Destroyするコードを書いたスクリプトを付ける、という感じですね
YukioMaki

2017/12/11 09:24

そうなんです。 スクリプト自体には問題はないですよね。 スタートボタンを押すとクリスタルは出現してエフェクターの雪も降るんですが回転がしてくれない。 「Unity4 ゲーム コーディング」と言う本で作ったゲームからゲームオブジェクトのクリスタルをコピーしてきたのでクリスタル自体に問題があるのかも? 新しくゲームオブジェクトを作り直してみます。
guest

0

出現させたオブジェクトのtransformをroteteしてあげれば良いのではないでしょうか?
(今はそうなっていませんよね?)

投稿2017/12/11 03:28

HiroshiWatanabe

総合スコア2160

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

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

0

transform.RotateをUpdateの中に書き換えたら回転出来ました。
Coogah、Bongo、HiroshWatanabeさんアドバイスありがとうございました。

投稿2017/12/11 14:49

YukioMaki

総合スコア21

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

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

0

自己解決

transform.RotateをUpdateの中に書き込んだら回転出来ました。
Coogah,Bongo,HiroshWatanabeさんアドバイスありがとうございました。

投稿2017/12/11 14:45

YukioMaki

総合スコア21

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問