Unityの書籍を使っていくつかゲームを作った後に気付きました。

何も身についてねぇーーー!

本見ないと何にもできねxあーーー!

ということで、基本に立ち返って、ゲームを作る前にGameObjctの操作方法を

C#スクリプトレベルで覚え直すことにしました。

まず、1つ目!! Transformコンポーネント

問題1:ゲームオブジェクトのx座標を一定毎に増やせ

ゲームオブジェクトのx座標を一定毎に増やせ

解答例

using UnityEngine;
public class Test : MonoBehaviour
{
Transform t;
void Start()
{
t = this.gameObject.GetComponent<Transform>();
}
// Update is called once per frame
void Update()
{
Vector3 pos = t.position;
pos.x += 0.1f;
t.position = pos;
}
}

まず、取得したいゲームオブジェクトにこのTestスクリプトがAdd Componentされている前提です。

t = this.gameObject.GetComponent<Transform>();

この部分は、正確に書いたバージョンで、よく他の説明ページではより簡易的に

t = this.transform;

とか,さらにthisすら省略して

t = transform;

と書いている場合もありますが、こちらでもOK。だた、より内部構造を意識してプログラミングするなら前者の方がいいかと思います。

後、Update部の部分ですが

t.position.x += 0.1f

でもいいんじゃ。と思いがちですが、これだと動きません。

一度Vector3に入れて上げて、座標を修正し、元に戻すというような手順が必要

 Vector3 pos = t.position;
pos.x += 0.1f;
t.position = pos;

問題2:ゲームオブジェクトのx座標を軸に回転させよ

ゲームオブジェクトのx座標を軸に回転させよ

解答例

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test2 : MonoBehaviour
{
Transform v;
void Start()
{
v = this.gameObject.GetComponent<Transform>();
}
// Update is called once per frame
void Update()
{
Quaternion rot = v.rotation;
rot.x += 0.01f;
v.rotation = rot;
}
}

問題1との違いはVector3かQuaternionかの違いです。

あとはあんまり変わりません。

ちなみに、Quaternioは180が最大値なのでこのプログラムだと180まで行くと回転がとまります。

問題3:ゲームオブジェクトのx座標成分に大きさを変えよ!

ゲームオブジェクトのx座標成分に大きさを変えよ!

解答例

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test3 : MonoBehaviour
{
Transform v;
void Start()
{
v = this.gameObject.GetComponent<Transform>();
Debug.Log(v);
}
// Update is called once per frame
void Update()
{
Vector3 s = v.localScale;
s.x += 0.01f;
v.localScale = s;
}
}

Unity 3D/2Dゲーム開発実践入門 Unity2019対応版

Unity 3D/2Dゲーム開発実践入門 Unity2019対応版

Unity2020入門

Unity2020入門

UnityではじめるC# 基礎編 改訂版

UnityではじめるC# 基礎編 改訂版

Unity ゲームエフェクト マスターガイド

Unity ゲームエフェクト マスターガイド

Receive the latest news in your email
Table of content
Related articles