Tips

【Unity】練習問題 3

【Unity】練習問題 3

Unity練習問題 問3

UnityのエディターやC#スクリプトのオリジナル問題を紹介していきます。
第3問はTransformコンポーネントについての問題です。

問題


スクリプトを使って、ゲームオブジェクトの座標を(0, 2, 0)に移動させたい。
下記のSample_3クラスに記述された①~③のメソッドのうち、題意を満たす記述として正しいものはどれか。
すべて選択しなさい。

Practice_03.cs

using UnityEngine;
using System.Collections;

public class Practice_03 : MonoBehaviour {

	/* ① */
	void Move1() {

		transform.position = new Vector3(0, 2.0f, 0);

	}

	/* ② */
	void Move2() {

		transform.position = Vector3.up * 2;

	}

	/* ③ */
	void Move3() {

		transform.position.x = 0;
		transform.position.y = 2.0f;
		transform.position.z = 0;

	}
}

  1. どれも正しくない

解答


解答を見る

1と2

解説


解説を見る

オブジェクトの座標は、TransformコンポーネントのPositionプロパティから制御します。
TransformへのアクセスはGetComponentを省略でき、transform.position でプロパティにアクセスできます。
transform.position はVector3型なので、座標を成分で指定する場合は①のようにVector3のインスタンスの引数に値を渡し、新しいVector3を作成して代入する必要があります。記述は正しいため①は正解です。

Vector3.upは、Vector3(0, 1, 0)という意味の、Unity側で用意された記述方法です。
これを2倍するとVector3(0, 2, 0)となるため、②も正解です。

③はコンパイルエラーとなります。
transform.position.y で、positionのy成分を参照することはできますが、これは読み込み専用です。
各成分を指定して変更したい場合は、①の記述方法でなければならないため、③は不正解となります。

y成分だけを更新したい場合はどうすればよいのか?

[csharp] void Move4() {

transform.position = new Vector3(transform.position.x, 2.0f, transform.position.z);

}
[/csharp]

このように記述すると、x成分とz成分は現状を維持し、y成分だけを変更することができます。

<<  < 次の問題  前の問題 > >>

[Unity_317×90]

ゲーム制作関連のオススメ連載リンク

とっても手軽なゲーム制作体験!
Unityゲーム開発基礎

実際のリリースゲームを題材にしたハンズオンゲーム制作連載
実践unityゲーム開発

Recent News

Recent Tips

Tag Search