Na verdade, atualmente estou trabalhando em um jogo baseado na gravidade: simplesmente, você coloca estrelas para mover seu jogador através de órbitas elípticas e do efeito estilingue. Desativei a gravidade e usei este código:
using UnityEngine;
using System.Collections;
public class PlanetGrav : MonoBehaviour {
//Declare Variables:
//Strength of attraction from your sphere (obviously, it can be any type of game-object)
public float StrengthOfAttraction;
//Obviously, you won't be using planets, so change this variable to whatever you want
GameObject planet;
//Initialise code:
void Start ()
{
//Again, you can change the tag to whatever you want.
planet = GameObject.FindGameObjectWithTag("Planet");
}
//Use FixedUpdate because we are controlling the orbit with physics
void FixedUpdate () {
//Declare Variables:
//magsqr will be the offset squared between the object and the planet
float magsqr;
//offset is the distance to the planet
Vector3 offset;
//get offset between each planet and the player
offset = planet.transform.position - transform.position;
//My game is 2D, so I set the offset on the Z axis to 0
offset.z = 0;
//Offset Squared:
magsqr = offset.sqrMagnitude;
//Check distance is more than 0 to prevent division by 0
if (magsqr > 0.0001f)
{
//Create the gravity- make it realistic through division by the "magsqr" variable
rigidbody2D.AddForce((StrengthOfAttraction * offset.normalized / magsqr) * rigidbody2D.mass);
}
}
}
}
PS O código originalmente percorreu uma matriz de todos os planetas: isso é editado e, portanto, pode não estar totalmente correto. Deve estar tudo bem.
Você viu esse homem
fonte
Tenha o planeta / grande esfera com um colisor de círculos, dê a ele um filho. Agora, o planeta deve ser marcado como planeta ou objeto cósmico estático, e a criança deve ser rotulada como Área de influência. Agora, o objeto pequeno deve ter um corpo rígido e uma esfera com um isTrigger.
Coloque um script no planeta com um gatilho ao entrar / entostar, se for uma esfera de influência, ele deve ser puxado para isso.
Caso contrário, você pode fazer o contrário. Mas, em qualquer caso, isso provavelmente seria melhor, já que você provavelmente deseja fazer com que a força gravitacional seja diferente de planeta para planeta.
fonte
O que os outros disseram, a gravidade na unidade é apenas em direção a uma determinada direção; portanto, talvez você deva desativar completamente a gravidade e escrever uma força que move a pequena esfera em direção à enorme.
fonte