I am creating an asteroids like game, and I need it to randomly place asteroids out side the viewport and apply force to the rigidbody2d in the direction of the viewport. For one how would I do this and where should I put the script? Thank You!!
P.S. I have an asteroid prefab.
bool isWrappingX = false;
bool isWrappingY = false;
bool isVisible = true;
float transportcooldown;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
transportcooldown--;
screenWrap ();
var cam = Camera.main;
var viewportPosition = cam.WorldToViewportPoint(transform.position);
// if (isVisible == true && viewportPosition.x > 1 || isVisible == true && viewportPosition.x < 0 ||
// isVisible == true && viewportPosition.y > 1 || isVisible == true && viewportPosition.y < 0) {
// isVisible = false;
// }
if (viewportPosition.x > 1 || viewportPosition.x < 0 ||
viewportPosition.y > 1 || viewportPosition.y < 0) {
isVisible = false;
} else if (isVisible == false) {
isVisible = true;
}
}
void screenWrap()
{
if (transportcooldown > 0) {
return;
}
if(isVisible)
{
isWrappingX = false;
isWrappingY = false;
return;
}
if(isWrappingX && isWrappingY) {
return;
}
var cam = Camera.main;
var viewportPosition = cam.WorldToViewportPoint(transform.position);
var newPosition = transform.position;
if (!isWrappingX && (viewportPosition.x > 1.1 || viewportPosition.x <-0.1))
{
newPosition.x = -newPosition.x;
isWrappingX = true;
}
if (!isWrappingY && (viewportPosition.y > 1.1 || viewportPosition.y <-0.1))
{
newPosition.y = -newPosition.y;
isWrappingY = true;
}
transform.position = newPosition;
transportcooldown = 20;
}