使い方の動画はこちら♪
1 2 |
transform.position += transform.TransformDirection(Vector3.forward * 10); |
※3つの数字は回転する軸を表していて、左から順に、x、y、z
1 2 |
transform.Rotate(new Vector3(0, 15, 0)); |
※3つの数字は回転する軸を表していて、左から順に、x、y、z
1 2 |
transform.Rotate(new Vector3(0, -15, 0)); |
※3つの数字は回転する軸を表していて、左から順に、x、y、z
1 2 |
transform.rotation = Quaternion.Euler(0, 90, 0); |
※3つの数字は回転する軸を表していて、左から順に、x、y、z
1 2 |
transform.rotation = Quaternion.Euler(0, -90, 0); |
※変数の部分にはprivate Plane plane = new Plane();とprivate float distance = 0;を入力する
1 2 3 4 5 6 7 8 |
var ray = Camera.main.ScreenPointToRay(Input.mousePosition); plane.SetNormalAndPosition(Vector3.up, transform.localPosition); if (plane.Raycast(ray, out distance)) { var lookPoint = ray.GetPoint(distance); transform.LookAt(lookPoint); } |
※変数の部分にはpublic GameObject target;を入力する
入力し終わった後にスクリプトにターゲットをドラッグ&ドロップするのを忘れずに!!
1 2 |
transform.LookAt(target.transform); |
※3つの数字は左から順に、x、y、z
1 2 |
transform.position = new Vector3(0, 0, 0); |
※変数の部分にはpublic Transform target;を入力する
入力し終わった後にスクリプトにターゲットをドラッグ&ドロップするのを忘れずに!!
1 2 |
transform.position = target.position; |
※変数の部分にはprivate Vector3 position; と
private Vector3 screenToWorldPointPosition;を入力する
1 2 3 4 5 |
position = Input.mousePosition; position.z = 10f; screenToWorldPointPosition = Camera.main.ScreenToWorldPoint(position); gameObject.transform.position = screenToWorldPointPosition; |
※3つの数字は左から順に、x、y、z
1 2 |
transform.position += new Vector3 (10, 0, 0); |
※3つの数字は左から順に、x、y、z
1 2 |
transform.position += new Vector3 (0, 10, 0); |
rigidbodyのFreezeRotationにチェック
※変数の部分にはpublic GameObject obj;を入力する
入力し終わった後にスクリプトにターゲットをドラッグ&ドロップするのを忘れずに!!
1 2 |
obj.SetActive(true); |
※変数の部分にはpublic GameObject obj;を入力する
入力し終わった後にスクリプトにターゲットをドラッグ&ドロップするのを忘れずに!!
1 2 |
obj.SetActive(false); |
完全に消したい場合
1 2 |
Destroy(this.gameObject); |
5秒後に消したい場合
1 2 |
Destroy(this.gameObject,5); |
※using~の部分に using UnityEngine.SceneManagement;を入力する
※便宜上Getabakoというシーンを読み込むことにしています
1 2 |
SceneManager.LoadScene("Getabako"); |
※例では色を赤にしています
1 2 |
GetComponent<Renderer>().material.SetColor("_Color", Color.red); |
1 2 |
this.transform.localScale += new Vector3(10, 10, 10); |
1 2 |
transform.localScale = new Vector3(1, 1, 1); |
#C#での変数の作り方
①図を参考にして変数を入力していきます。
②変数はアクセス修飾子 型 変数名;と入力します。
アクセス修飾子については以下を参考にして下さい。
型については以下を参考にして下さい。
例えば他のオブジェクトでも使用可能なfloat型のgetabakoという変数を作る場合
public float getabako; と入力します。
※便宜上、getabakoという変数を作ったことにしています
1 2 |
getabako = 0; |
1 2 |
getabako += 1; |
1 2 |
getabako++; |
{}の中には実行する内容を入力する
1 2 |
void Start(){} |
{}の中には実行する内容を入力する
それぞれのキーの入力は以下の表を参考にして下さい
連打じゃない場合
1 2 |
if (Input.GetKeyDown(KeyCode.Space)){} |
連打の場合
1 2 |
if (Input.GetKey(KeyCode.Space)){} |
キーから離された場合
1 2 |
if (Input.GetKeyUp(KeyCode.Space)){} |
図を参考にして入力します
{}の中には実行する内容を入力する
1 2 3 4 5 6 |
void OnMouseOver() { if (Input.GetMouseButtonDown(0)) {} } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class MessageSend : MonoBehaviour { public GameObject Reciever;//メッセージを送りたいオブジェクト // Start is called before the first frame update void Start() { Reciever.gameObject.SendMessage ("Message1");//RecieverにMessage1というメッセージを送る } } |
1 2 3 4 5 6 7 8 9 10 11 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ReceiveMessage : MonoBehaviour { // Start is called before the first frame update private void Message1 (){//Message1を受け取った時 Debug.Log("受け取った!");//メッセージを受け取った時の処理 } } |
1 2 |
yield return new WaitForSeconds(1); |
Scratchの定義ブロックのように一連の命令をひとかたまりにしていつでも呼び出せるようにできる機能のことです。 図を参考にして入力しますコルーチンの説明
その一連の中にのみ、待ち時間を入れることができます。コルーチンの作り方
{}の中にはyield return new WaitForSeconds(1);を含めた一連の実行する内容を入力する
1 2 3 4 5 6 7 |
IEnumerator getabako(){ 他の命令 yield return new WaitForSeconds(1); 他の命令 yield return new WaitForSeconds(1); } |
と入力していくと、getabakoというコルーチンを作り、その中で1秒待つを数回いれている、ということになります
コルーチンの呼び出し方
※呼び出したい時に以下を入力する
1 2 |
StartCoroutine("getabako"); |
{}の中には実行する内容を入力する
1 2 |
for (int i = 0; i < 10; i++){} |
1 2 |
void Update(){} |
()の中には条件、{}の中には実行する内容を入力する
1 2 |
if(getabako==1){} |
()の中には条件、{}の中には実行する内容を入力する
※便宜上、getabakoというint型の変数が1ならという条件を加えています
1 2 3 |
if(getabako==1){} else{} |
クローンの補足説明
UnityのクローンはScratchに比べて多機能です
以下の画像のようにクローンを生成する段階で、生成するオブジェクト、クローンを生成する場所、クローンの回転を指定します。
画像の状態だとクローンを生成するオブジェクトがそのままの角度で出てきます。
例えば、クローンをスクリプトをつけたオブジェクトと同じ角度で出したい場合は
Quaternion.identityをthis.transform.rotationに変更します。
1 2 |
Instantiate(this.gameObject, this.transform.position, Quaternion.identity); |
※変数の部分にはpublic GameObject obj;を入力する
1 2 |
Instantiate(obj.gameObject, this.transform.position, Quaternion.identity); |
プレファブ化したオブジェクトにスクリプトを貼りつける
※注意事項があるのでよく読んで下さい※
入力する箇所
衝突するオブジェクトがすり抜けない場合
①Colliderをつける
②どちらかには必ずRigidBodyをつける
衝突するオブジェクトがすり抜ける場合
①Colliderの「IsTrigger」にチェックをつける
②衝突するオブジェクトにタグをつける
タグのつけかた
{}の中には実行する内容を入力する
衝突するオブジェクトがすり抜けない場合
1 2 3 4 5 |
void OnCollisionEnter (Collision col) { if(col.gameObject.tag == "getabako"){} } |
衝突するオブジェクトがすり抜ける場合
1 2 3 4 5 |
void OnTriggerEnter (Collider col) { if(col.gameObject.tag == "getabako"){} } |
※変数の部分にはpublic GameObject obj1;とpublic GameObject obj2;を入力する
1 2 3 4 |
Vector3 Apos = obj1.transform.position; Vector3 Bpos = obj2.transform.position; float dis = Vector3.Distance(Apos,Bpos); |
1 2 |
Input.GetKey(KeyCode.Space) |
※他のキーを使う場合は「スペースキーが押されたとき」の項を参照
左クリック
1 2 |
Input.GetMouseButtonDown(0) |
右クリック
1 2 |
Input.GetMouseButtonDown(1) |
マウスホイール
1 2 |
Input.GetMouseButtonDown(2) |
※便宜上オブジェクトの名前はgetabako、代入するVector3の変数はgetabakoposとします
1 2 3 |
Vector3 getabakopos = GameObject.Find("getabako").transform.position; GameObject.Find("getabako").transform.position = new Vector3(getabakopos.x, getabakopos.y, getabakopos.z); |

※便宜上1をとりあえず入れます
1 2 |
1+1; |
※便宜上1をとりあえず入れます
1 2 |
1-1; |
※便宜上1をとりあえず入れます
1 2 |
1*1; |
※便宜上1をとりあえず入れます
1 2 |
1/1; |
※便宜上getabako1とgetabako2という変数を入れています
1 2 |
getabako1 < getabako2; |
※便宜上getabako1とgetabako2という変数を入れています
1 2 |
getabako1 == getabako2; |
※便宜上getabako1とgetabako2という変数を入れています
1 2 |
getabako1 < getabako2; |
※便宜上getabakoという変数を入れています
1 2 |
int getabako = Random.Range (1, 10); |
1 2 |
条件 && 条件; |
1 2 |
条件 || 条件; |
1 2 |
条件 = !条件; |
[…] Scratch → Unity対応変換表 […]
メッセージを送る、メッセージを受け取ったときの対応表はないのですか??
返信遅くなりすみません。
追加しましたので、見てみて下さい♪
[…] 地面にはGroundというタグをつけましょう タグのつけ方はこちらを参考にしてください […]
[…] → Unity対応早見表 https://getabakoclub.com/2018/09/25/scratch-%E2%86%92-unity%E5%AF%BE%E5%BF%9C%E6%97%A9%E8%A6%8B%E8%A… […]
メッセージ1を受け取ったときの
private void Message1 (){}は
public void Message1 (){}
がただしいです
plivateの場合、送る側でエラーが起きます。
receiverにメッセージを受け取る側のオブジェクトをドラッグ&ドロップすれば大丈夫だと思いますよー
一番上の「10歩動かす」の構文についてですが、以下のコードのほうが適切なのではないかと思いコメントさせていただきました。もしよろしければご参考になさってみてはいかがでしょうかと…。
なお、このコードの動作は私自身のUnityで確認済みです。
Vector3 velocity = gameObject.transform.rotation * new Vector3(10, 0, 0);
gameObject.transform.position += velocity * Time.deltaTime;
コメントありがとうございます
確かにおっしゃる通りなのですが、この表を作ったのは小学生を対象に考えてまして、なるべくシンプルに、というところを目指しています。
正確さよりも簡潔さを優先した結果こうなっています。