Unity

動く床、落ちる床の作り方

投稿日:2019年5月3日 更新日:

目次

動く床

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

public class MoveFloor : MonoBehaviour
{
    private Vector3 initialPosition;

    [SerializeField]
    private int movex = 0; 

    [SerializeField]
    private int movey = 0;

    [SerializeField]
    private int movez = 0;

    [SerializeField]
    private int movespeed = 0;

    // Start is called before the first frame update
    void Start()
    {
        initialPosition = transform.position;
    }

    // Update is called once per frame
    void Update()
    {
        transform.position = new Vector3(Mathf.Sin(Time.time * movespeed) * movex + initialPosition.x, Mathf.Sin(Time.time * movespeed) * movey + initialPosition.y, Mathf.Sin(Time.time * movespeed) * movez + initialPosition.z);
    }
}

設定

  • ①動かしたいオブジェクトにスクリプト、コライダーをつける
  • ②Move x,y,zに数字を入力して、移動する方向や距離を決める
  • ※+-で方向が変わります

  • ③MoveSpeedに数字を入力して、移動する速さを決める

触れると落ちる床

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

public class FallingFloor : MonoBehaviour
{
    private Vector3 initialPosition;
    private bool Falling;
    private int FallingSpeed = 10;

    // Start is called before the first frame update
    void Start()
    {
        initialPosition = transform.position;
    }

    // Update is called once per frame
    void Update()
    {
        if(Falling == true)
        {
            transform.position -= new Vector3(0, FallingSpeed * Time.deltaTime, 0);
        }

        if(transform.position.y <= -10)
        {
            transform.position = initialPosition;
            Falling = false;
        }
    }

    private void OnCollisionEnter(Collision collision)
    {
        if(collision.gameObject.tag == "Player")
        { 
            Falling = true;
        }
    }
}

設定

  • ①動かしたいオブジェクトにスクリプト、コライダーをつける
  • ②プレイヤーにRigidbodyとコライダーをつける
  • ※RigidbodyのFreezeRotationにはチェックを入れておきましょう

  • ③プレイヤーにPlayerというタグをつける

床が動いた時においていかれないようにする

using UnityEngine;
using System.Collections;


public class notfall : MonoBehaviour
{
void OnCollisionEnter(Collision col) {
    if (col.gameObject.tag == "MoveFloor") {
        transform.SetParent(col.transform);
    }
}

void OnCollisionExit(Collision col) {
    if (col.gameObject.tag == "MoveFloor") {
        transform.SetParent(null);
    }
}
}

設定

  • ①動く床、落ちる床にMoveFloorというタグをつける

このサイトについて

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

検索

このサイトについて

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

検索

-Unity

執筆者:


comment

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

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

関連記事

UnityでGoogleMapを読み込み、表示させるとこから経路探索まで

はじめに Unityで現実世界の地図を表示するにはGoogleMapを使うのが便利です 大規模に使用しない限りは無料で使用できますが、登録のためにクレジットカードが必要になりますので、 必ず、用意して …

no image

XCodeビルド一時メモ

AppDelegate.swiftに貼るやつ class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? …

no image

【Unity】WebGLでビルドしてレスポンシブにWordPressに埋め込む

WebGLでビルドしてWebに埋め込みたいときってありますよね でも出力したデータをそのまま埋め込むとスマホで見たときにサイズが合わなかったりします index.htmlの編集 デフォルトで出力した際 …

no image

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

今回やること 敵キャラの作成 敵の攻撃 敵がプレイヤーに向かってくるようにする 敵のダメージ処理 敵キャラの作成 敵の攻撃 Enemyスクリプトには一番上のusing~の部分にも記入します。 usin …

Unityでシーンを切り替える

現在のシーンの登録 現在のシーンをセーブして、File → Build Settingsをおします Add Open Scenesをおして、×で閉じます 切り替えるシーンの作成 File → New …

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

  • 318833総閲覧数:
  • 102今日の閲覧数:
  • 246591総訪問者数:
  • 88今日の訪問者数:

住所
Akita,Japan

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

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

getabakosensei@gmail.com