I have been messing around with simulating real life space distances, and scales. I solved floating point problems, but when I try to travel at real life light speed, my script cannot correct fast enough to avoid floating point problems. I am wondering if there is anyway to make this correction faster than every frame. Here is the script:
using UnityEngine;
using System.Collections;
public class Reposition : MonoBehaviour {
public float maxDist;
public GameObject[] sceneObjects;
void Awake () {
sceneObjects = GameObject.FindGameObjectsWithTag("Respawn");
}
void Update () {
Vector3 xpos = new Vector3(0, transform.position.y, transform.position.z);
Vector3 ypos = new Vector3(transform.position.x, 0, transform.position.z);
Vector3 zpos = new Vector3(transform.position.x, transform.position.y, 0);
if(transform.position.x > maxDist){
transform.position = xpos;
foreach(GameObject obj in sceneObjects){
obj.transform.position = new Vector3(obj.transform.position.x - maxDist, obj.transform.position.y, obj.transform.position.z);
}
}
if(transform.position.x < -maxDist){
transform.position = xpos;
foreach(GameObject obj in sceneObjects){
obj.transform.position = new Vector3(obj.transform.position.x + maxDist, obj.transform.position.y, obj.transform.position.z);
}
}
if(transform.position.y > maxDist){
transform.position = ypos;
foreach(GameObject obj in sceneObjects){
obj.transform.position = new Vector3(obj.transform.position.x, obj.transform.position.y - maxDist, obj.transform.position.z);
}
}
if(transform.position.y < -maxDist){
transform.position = ypos;
foreach(GameObject obj in sceneObjects){
obj.transform.position = new Vector3(obj.transform.position.x, obj.transform.position.y + maxDist, obj.transform.position.z);
}
}
if(transform.position.z > maxDist){
transform.position = zpos;
foreach(GameObject obj in sceneObjects){
obj.transform.position = new Vector3(obj.transform.position.x, obj.transform.position.y, obj.transform.position.z - maxDist);
}
}
if(transform.position.z < -maxDist){
transform.position = zpos;
foreach(GameObject obj in sceneObjects){
obj.transform.position = new Vector3(obj.transform.position.x, obj.transform.position.y, obj.transform.position.z + maxDist);
}
}
}
}