3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unity2D ~貫通床の実装~

Last updated at Posted at 2016-12-25

はじめに

スマブラとかにある下からすり抜けられる床が欲しくなりました。

↓こういうやつ
maxresdefault.jpg

実装

プレーヤーと床のどちらにもscript書きます

プレーヤー側オブジェクト

(事前にキャラ作って当たり判定追加してるしてるって前提)

プレーヤーのInspectorのTagをPlayerに変更

shgdfsdh.PNG

プレーヤーにColliderを追加し、接触判定を上3/4に覆いかぶせるように設定します。
追加したColliderのIs TriggerをOnにします。

↓こんな感じ
gardfgarg.PNG

tryyysy.PNG

床側オブジェクト

床を作成してColliderを追加し、接触判定の下3/4に覆いかぶせるように設定します。
追加したColliderのIs TriggerをOnにします。

↓こんな感じ
grdgagreg.PNG

tthshsh.PNG

床側スクリプト作成

以下を床のオブジェクトに引っ付けましょう

public class PassFloor : MonoBehaviour {

    bool setPass;
    BoxCollider2D colliderOfPass;

	// Use this for initialization
	void Start () {
        colliderOfPass = GetComponent<BoxCollider2D>();
	}
	
	// Update is called once per frame
	void Update () {
        
        if (setPass)
        {
            colliderOfPass.enabled = false;
        }
        if (!setPass)
        {
            colliderOfPass.enabled = true;
        }
	}

    //プレイヤーのIsTriggerがOnの側のコリジョンが床のIsTriggerがOnの側のコリジョンと接触している時
    void OnTriggerStay2D(Collider2D col)
    {
        if (col.gameObject.tag == "Player")
        {
            setPass = true;
        }
    }

    void OnTriggerExit2D(Collider2D col)
    {
        if (col.gameObject.tag == "Player")
        {
            setPass = false;
        }
    }
}

↓こんな感じです
sgshhh.PNG

実際の動き

IsTrrigerがOnになっている部分は物理的接触は発生しませんが、
IsTriggerをOnにしているColliderが接触するとOnTrigger...が読み込まれます。
事前に設定したbool変数をOnにして、その間は床のColliderの接触判定を切るって感じです

コンポーネントの読み込み仕様上、colliderOfPass = GetComponent();で読み込むコンポーネントはBoxCollider2Dが複数ある場合Inspectorの上側から読み込まれるのでIsTrigerがOnになっているコンポーネントは下に配置しましょうね。

これ二人プレイとかを考慮すると駄目な実装ですね・・・
二人プレイを考えたらどういう実装が良いんでしょうね

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?