簡體   English   中英

玩家來回傳送

[英]Player teleports back and forth

當玩家離開屏幕時,我希望他們傳送到屏幕的另一側,但是效果不是很好。

我將以下腳本附加到這兩個傳送物品上,但是當玩家進入對撞機時,它開始在兩者之間來回傳送(兩個對撞機都具有以下腳本和一個2d盒子對撞機作為觸發)。

using UnityEngine;
using System.Collections;

public class WallTransport : MonoBehaviour {

    public Collider2D destination;
    public LayerMask layer;

    void OnTriggerEnter2D(Collider2D other) {
        if(((1 << other.gameObject.layer) & layer) != 0) {
            Vector2 destPos = destination.transform.position;
            other.transform.position = new Vector2(destPos.x, other.transform.position.y);
        }
    }
}
using UnityEngine;
using System.Collections;

public class WallTransport : MonoBehaviour {

    public Collider2D destination;
    public LayerMask layer;

    void OnTriggerEnter2D(Collider2D other) {
        if(((1 << other.gameObject.layer) & layer) != 0) {
            Vector2 destPos = destination.transform.position;
            other.transform.position = new Vector2(destPos.x + 1, other.transform.position.y);
            //                                     ^^^^^^^^^^^^^
        }
    }
}

例如,在下面的圖像中,傳送器B位於(10,0),傳送器A位於(0,0)。 假設他們從左到右進入傳送者B,那么他們在傳送后不會在(0,0)處吐出玩家,而是將他們放置在(1,0)處,因此他們的動量會朝那個方向繼續。

這只是一個簡單的示例,絕不假定您的情況是基本的。

簡單的傳送器示例

添加一個名為“ has_teleported”的布爾值,默認情況下將其設置為false ...進入傳送對撞機時將其啟用(true),在退出傳送對撞機時將其關閉(false)。

僅在關閉時才允許傳送功能起作用。

Dub Stylee的答案將起作用並且更簡單,但是,這種方式更具動態性(因為可以通過事件等啟用和禁用遠距傳輸),並且在需要更改大小時可以擴展。

選擇最適合您的特定項目的方式,總會有一些折衷方案。

希望這可以幫助 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM