De hecho, actualmente estoy trabajando en un juego basado en la gravedad: simplemente, colocas estrellas para mover a tu jugador a través de órbitas elípticas y el efecto tirachinas. Inhabilité la gravedad y usé 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);
}
}
}
}
PD: el código originalmente recorrió una matriz de todos los planetas: esto está editado y, por lo tanto, puede no ser completamente correcto. Sin embargo, debería estar bien.
Has visto a este hombre
fuente
Tenga el planeta / esfera grande con un colisionador circular, dele un niño. Ahora, el planeta debería ser etiquetado como planeta u objeto cósmico estático, y el niño debería ser etiquetado como Área de influencia. Ahora, el objeto pequeño debe tener un cuerpo rígido y una esfera con isTrigger.
Ponga una secuencia de comandos en el planeta con un activador on enter / entertay, si se trata de una esfera de influencia, debe ser arrastrado hacia eso.
De lo contrario, puede hacerlo al revés. Pero en cualquier caso, esto probablemente sería mejor, ya que lo más probable es que desee hacer que la atracción gravitacional sea diferente de un planeta a otro.
fuente
Lo que otros dijeron, la gravedad en la unidad es solo hacia una determinada dirección, por lo que tal vez deberías deshabilitar la gravedad por completo y escribir una fuerza que mueva la esfera pequeña hacia la enorme.
fuente