Scratch Unity

Scratch → Unity対応早見表

投稿日:2018年9月25日 更新日:

使い方の動画はこちら♪

動き

動き1.PNG

transform.position += transform.TransformDirection(Vector3.forward * 10);

動き2.PNG
※3つの数字は回転する軸を表していて、左から順に、x、y、z

transform.Rotate(new Vector3(0, 15, 0));

動き15.png
※3つの数字は回転する軸を表していて、左から順に、x、y、z

transform.Rotate(new Vector3(0, -15, 0));

動き9.png
※3つの数字は回転する軸を表していて、左から順に、x、y、z

transform.rotation = Quaternion.Euler(0, 90, 0);

動き10.png
※3つの数字は回転する軸を表していて、左から順に、x、y、z

transform.rotation = Quaternion.Euler(0, -90, 0);

動き11.png
※変数の部分にはprivate Plane plane = new Plane();とprivate float distance = 0;を入力する

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);
        }

動き3.PNG
※変数の部分にはpublic GameObject target;を入力する
入力し終わった後にスクリプトにターゲットをドラッグ&ドロップするのを忘れずに!!

transform.LookAt(target.transform);

動き4.PNG
※3つの数字は左から順に、x、y、z

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

動き5.PNG
※変数の部分にはpublic Transform target;を入力する
入力し終わった後にスクリプトにターゲットをドラッグ&ドロップするのを忘れずに!!

transform.position = target.position;

動き12.png
※変数の部分にはprivate Vector3 position; と
private Vector3 screenToWorldPointPosition;を入力する

position = Input.mousePosition;
position.z = 10f;
screenToWorldPointPosition = Camera.main.ScreenToWorldPoint(position);
gameObject.transform.position = screenToWorldPointPosition;

動き6.PNG
※3つの数字は左から順に、x、y、z

transform.position += new Vector3 (10, 0, 0);

動き7.PNG
※3つの数字は左から順に、x、y、z

transform.position += new Vector3 (0, 10, 0);

動き8.PNG
rigidbodyのFreezeRotationにチェック
freezerotation.PNG

見た目

見た目1.PNG
※変数の部分にはpublic GameObject obj;を入力する
入力し終わった後にスクリプトにターゲットをドラッグ&ドロップするのを忘れずに!!

obj.SetActive(true);

見た目2.PNG
※変数の部分にはpublic GameObject obj;を入力する
入力し終わった後にスクリプトにターゲットをドラッグ&ドロップするのを忘れずに!!

obj.SetActive(false);

完全に消したい場合

Destroy(this.gameObject);

5秒後に消したい場合

Destroy(this.gameObject,5);

見た目6.PNG
※using~の部分に using UnityEngine.SceneManagement;を入力する
※便宜上Getabakoというシーンを読み込むことにしています

SceneManager.LoadScene("Getabako");

見た目3.PNG
※例では色を赤にしています

GetComponent<Renderer>().material.SetColor("_Color", Color.red);

見た目4.PNG

this.transform.localScale += new Vector3(10, 10, 10);

見た目5.PNG

transform.localScale = new Vector3(1, 1, 1);
データ
#C#での変数の作り方

①図を参考にして変数を入力していきます。
図1.png
②変数はアクセス修飾子 型 変数名;と入力します。
アクセス修飾子については以下を参考にして下さい。
スライド1.PNG
型については以下を参考にして下さい。
スライド2.PNG
例えば他のオブジェクトでも使用可能なfloat型のgetabakoという変数を作る場合
public float getabako; と入力します。

データ1.PNG
※便宜上、getabakoという変数を作ったことにしています

getabako = 0;

データ2.PNG

getabako += 1;
getabako++;
イベント

イベント1.PNG
{}の中には実行する内容を入力する

void Start(){}

イベント2.PNG
{}の中には実行する内容を入力する

それぞれのキーの入力は以下の表を参考にして下さい
キー入力表.png

連打じゃない場合

if (Input.GetKeyDown(KeyCode.Space)){}

連打の場合

if (Input.GetKey(KeyCode.Space)){}

キーから離された場合

if (Input.GetKeyUp(KeyCode.Space)){}

イベント3.PNG
図を参考にして入力します
図2.png

{}の中には実行する内容を入力する

void OnMouseOver()
    {
        if (Input.GetMouseButtonDown(0))
        {}
    }

wp-image-2386

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というメッセージを送る
    }
}

wp-image-2387

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.PNG

yield return new WaitForSeconds(1);
コルーチンの説明

Scratchの定義ブロックのように一連の命令をひとかたまりにしていつでも呼び出せるようにできる機能のことです。
その一連の中にのみ、待ち時間を入れることができます。

コルーチンの作り方

図を参考にして入力します
図2.png
{}の中にはyield return new WaitForSeconds(1);を含めた一連の実行する内容を入力する

IEnumerator getabako(){
他の命令
yield return new WaitForSeconds(1);
他の命令
yield return new WaitForSeconds(1);
}

と入力していくと、getabakoというコルーチンを作り、その中で1秒待つを数回いれている、ということになります

コルーチンの呼び出し方
※呼び出したい時に以下を入力する

StartCoroutine("getabako");

制御2.PNG
{}の中には実行する内容を入力する

for (int i = 0; i < 10; i++){}

制御3.PNG

void Update(){}

制御4.PNG
()の中には条件、{}の中には実行する内容を入力する

if(getabako==1){}

制御5.PNG
()の中には条件、{}の中には実行する内容を入力する
※便宜上、getabakoというint型の変数が1ならという条件を加えています

if(getabako==1){}
else{}

clone.PNG 

クローンの補足説明

UnityのクローンはScratchに比べて多機能です
以下の画像のようにクローンを生成する段階で、生成するオブジェクト、クローンを生成する場所、クローンの回転を指定します。16.png
画像の状態だとクローンを生成するオブジェクトがそのままの角度で出てきます。
例えば、クローンをスクリプトをつけたオブジェクトと同じ角度で出したい場合は
Quaternion.identityをthis.transform.rotationに変更します。

Instantiate(this.gameObject, this.transform.position, Quaternion.identity);

制御8.PNG
※変数の部分にはpublic GameObject obj;を入力する

Instantiate(obj.gameObject, this.transform.position, Quaternion.identity);

制御7.PNG
プレファブ化したオブジェクトにスクリプトを貼りつける

調べる
※便宜上オブジェクトの名前もしくはタグがgetabakoということにしています

※注意事項があるのでよく読んで下さい※

入力する箇所
図2.png
衝突するオブジェクトがすり抜けない場合
①Colliderをつける
②どちらかには必ずRigidBodyをつける
衝突するオブジェクトがすり抜ける場合
①Colliderの「IsTrigger」にチェックをつける
②衝突するオブジェクトにタグをつける
タグのつけかた
図3.png

調べる1.PNG
{}の中には実行する内容を入力する

衝突するオブジェクトがすり抜けない場合

void OnCollisionEnter (Collision col)
    {
        if(col.gameObject.tag == "getabako"){}
    }

衝突するオブジェクトがすり抜ける場合

void OnTriggerEnter (Collider col)
    {
        if(col.gameObject.tag == "getabako"){}
    }

調べる2.PNG
※変数の部分にはpublic GameObject obj1;とpublic GameObject obj2;を入力する

Vector3 Apos = obj1.transform.position;
Vector3 Bpos = obj2.transform.position;
float dis = Vector3.Distance(Apos,Bpos);

調べる3.PNG

Input.GetKey(KeyCode.Space)

※他のキーを使う場合は「スペースキーが押されたとき」の項を参照

15.png

左クリック

Input.GetMouseButtonDown(0)

右クリック

Input.GetMouseButtonDown(1)

マウスホイール

Input.GetMouseButtonDown(2)

調べる4.PNG
※便宜上オブジェクトの名前はgetabako、代入するVector3の変数はgetabakoposとします

Vector3 getabakopos = GameObject.Find("getabako").transform.position;
GameObject.Find("getabako").transform.position = new Vector3(getabakopos.x, getabakopos.y, getabakopos.z);
演算
演算1.PNG
※便宜上1をとりあえず入れます

1+1;

演算2.PNG
※便宜上1をとりあえず入れます

1-1;

演算3.PNG
※便宜上1をとりあえず入れます

1*1;

演算4.PNG
※便宜上1をとりあえず入れます

1/1;

演算7.PNG
※便宜上getabako1とgetabako2という変数を入れています

getabako1 < getabako2;

演算8.PNG
※便宜上getabako1とgetabako2という変数を入れています

getabako1 == getabako2;

演算9.PNG
※便宜上getabako1とgetabako2という変数を入れています

getabako1 < getabako2;

演算5.PNG
※便宜上getabakoという変数を入れています

int getabako = Random.Range (1, 10);

演算10.PNG

条件 && 条件;

演算11.PNG

条件 || 条件;

演算12.PNG

条件 = !条件;

このサイトについて

ここには、自己紹介やサイトの紹介、あるいはクレジットの類を書くと良いでしょう。

検索

このサイトについて

ここには、自己紹介やサイトの紹介、あるいはクレジットの類を書くと良いでしょう。

検索

-Scratch, Unity

執筆者:


  1. ヤマダ より:

    メッセージを送る、メッセージを受け取ったときの対応表はないのですか??

  2. […] 地面にはGroundというタグをつけましょう タグのつけ方はこちらを参考にしてください […]

  3. たかはし より:

    メッセージ1を受け取ったときの
    private void Message1 (){}は
    public void Message1 (){}

    • たかはし より:

      がただしいです
      plivateの場合、送る側でエラーが起きます。

      • getabako より:

        receiverにメッセージを受け取る側のオブジェクトをドラッグ&ドロップすれば大丈夫だと思いますよー

  4. ケモトモ より:

    一番上の「10歩動かす」の構文についてですが、以下のコードのほうが適切なのではないかと思いコメントさせていただきました。もしよろしければご参考になさってみてはいかがでしょうかと…。
    なお、このコードの動作は私自身のUnityで確認済みです。
    Vector3 velocity = gameObject.transform.rotation * new Vector3(10, 0, 0);
    gameObject.transform.position += velocity * Time.deltaTime;

    • getabako より:

      コメントありがとうございます
      確かにおっしゃる通りなのですが、この表を作ったのは小学生を対象に考えてまして、なるべくシンプルに、というところを目指しています。
      正確さよりも簡潔さを優先した結果こうなっています。

  5. 質問です。scratchをやっていて、最近Unityを始めたものです。
    scratchのコスチューム機能を作成することはできないでしょうか?
    できればUIのImageでやりたいです。
    (コスチュームをインスペクターにたくさん入れて、それをプログラムで変えれるようなものが欲しいです!)

    いつもこのサイトを愛用しています!わかりやすくて助かっています!

    • getabako より:

      ありがとうございます!
      こんな感じでボタンで画像を切り替えるスクリプトを作ってみました!
      やりたいことこんなイメージでしょうか?
      このスクリプトを作成し、画像に貼り付け、
      CostumeImageには変更したい画像を
      Spritesには変更したい画像の分だけ、数で指定し、その画像を全てドラッグ&ドロップして下さい

      using System.Collections;
      using System.Collections.Generic;
      using UnityEngine;

      using UnityEngine.UI;

      public class SetImage : MonoBehaviour {

      public Image CostumeImage; // 変更する画像
      public Sprite[] Sprites; // 変更する画像たちを格納しておく配列
      int SpriteNum = 0;

      // Use this for initialization
      void Start () {

      }

      // Update is called once per frame
      void Update () {

      CostumeImage.sprite = Sprites[SpriteNum]; // 画像を配列のSpriteNum番目の画像にする

      if (Input.GetKeyDown(KeyCode.X)) // Xが押されたら
      {
      SpriteNum++; // 配列の番号を進める
      }

      if (Input.GetKeyDown(KeyCode.Z)) // Zが押されたら
      {
      SpriteNum–; // 配列の番号を戻す
      }
      }
      }

      • ユニティヤング より:

        ほんとに感謝感激です!!!ありがとうございます!!!うまくできました!!!

  6. ユニティヤング より:

    もう一つ、質問してもいいですか?何度もすみませんm(_ _)m
    クローンの消し方を教えてください!

comment

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

一定距離で追従するカメラ

using UnityEngine; using System.Collections; public class CameraFollowPlayer : MonoBehaviour { publi …

no image

Scratch(スクラッチ)の始め方

「Scratchに参加しよう」をおす ユーザー名とパスワードを2回入力して「次へ」をおす それぞれ日本語は使えないので注意しましょう 自分の誕生年月と国籍を入力して「次へ」をおす メールアドレスを2回 …

Scratchでフェードイン、フェードアウトをさせる

今回やること 幽霊の効果を使用してフェードインやフェードアウトを作ります フェードインのプログラミング テストプレイをすると ゆっくりと姿を表します フェードアウトのプログラミング テストプレイをする …

ブラウブリッツ秋田のブラウゴン応援ゲーム

操作説明 マウスでひたすらクリックするだけです 100回クリックすると…!?

no image

Unityで3Dシューティングアクションを作ろう①

チュートリアルの内容 3D空間を走り回り、弾を飛ばして敵を倒すゲームを作ります。 今回やること プレイヤーの移動 アニメーションの遷移 カメラの追従 事前に準備するもの プレイヤー(待機アニメーション …

ゲタバコ倶楽部へようこそ

  • 300732総閲覧数:
  • 15今日の閲覧数:
  • 231527総訪問者数:
  • 14今日の訪問者数:

住所
Akita,Japan

営業時間
月~日: 10:00 AM – 10:00 PM

このページはゲタバコ先生の日々思うことや活動、プログラミングの習得方法を発信するページです。
仕事のご依頼、メッセージ等、サービス概要をご覧の上で、お気軽にご連絡ください。

getabakosensei@gmail.com