Hi all,
So I’m moderately experienced in 3d design, but I do not no much about code. Recently I came to a stand still in my next game, I’m trying to have two worlds set up next to each other in a 3d environment (in the same scene), and have the player transfer back and forth between them. (See attached photo!) What I’m currently trying to do is write a script, either in C# or JavaScript that will:
On press of the control key…
- If the player is on the left area, teleport the player object on the x-axis right by 500
- If the player is on the right area, teleport the player object on the x-axis left by 500
- However, keep the Y and Z positions the same.
I’ve been thinking I need to use two box colliders to indicate whether the player is on the right or left plane, but I’m not sure. How do I write a script like this?
I know this is an incredibly vague question, but any help is GREATLY appreciated!!!
Here’s a pretty basic example for you which you can do just by toggling a boolean. It will work fine for what you’ve described but if there is more than one teleport location you’ll obviously need something else.
using UnityEngine;
using System.Collections;
public class TeleportPlayer : MonoBehaviour {
private float distance = 500;
private bool teleported;
// Update is called once per frame
void Update () {
if (Input.GetKeyDown(KeyCode.LeftControl))
{
//toggle bool
teleported = !teleported;
//cache player's current position
Vector3 pos = gameObject.transform.position;
if (teleported == true)
{
//move 500 on the X axis, set Y and Z to current position
gameObject.transform.position = new Vector3(pos.x + distance , pos.y, pos.z);
}
else
{
//move -500
gameObject.transform.position = new Vector3(pos.x - distance , pos.y, pos.z);
}
}
}
}
If you’ve got lots going on in each of those terrains though then it might be better to use separate scenes