当一名玩家离开屏幕时,我希望他们传送到屏幕的另一侧,但这不是很好。
我将以下脚本附加到两个传送项目,但当玩家进入对撞机时,它开始在两者之间来回传送(两个碰撞器都有以下脚本和一个2d盒子对撞机作为触发器)。 / p>
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);
}
}
}
答案 0 :(得分:0)
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),假设他们从左到右进入传送器B,那么他们的动量就会继续朝这个方向发展。
这只是一个简单的例子,绝不假设您的情况是基本的。
答案 1 :(得分:0)
添加名为&#34; has_teleported&#34;的bool。并默认将其设置为false 当你进入一个传送对撞机时,打开它(true),当你退出传送对撞机时,将其关闭(假)。
只有在关闭时才允许传送功能工作。
Dub stylee的答案会起作用并且更简单,但是,这种方式更具动态性(可以通过事件等启用和禁用远程传送),并且如果需要更改尺寸,则可以扩展。
选择最适合您特定项目的方式,总会有权衡。
希望这有帮助:)