Задать вопрос
alexey_sigida
@alexey_sigida

Как сымитировать траекторию движения по эллипсу под силой тяжести?

Имеется два тела, у одного огромная масса, у другого единичная. Имеется код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class force : MonoBehaviour {

public Vector2 force1;
public Rigidbody2D myRigidbody;
public Rigidbody2D myRigidbody2;
public float f12;
public GameObject myObject1;
public GameObject myObject2;
public int nObject;

public float inputX;
public float inputY;
public float inputX2;
public float inputY2;

public float y;

// Use this for initialization
void Start () {

  if (nObject == 1) {
myObject1 = GameObject.Find ("Sphere1");
myObject2 = GameObject.Find ("Sphere2");
myRigidbody = myObject1.GetComponent<Rigidbody2D> ();
myRigidbody2 = myObject2.GetComponent<Rigidbody2D> ();
 }

 if (nObject == 2) {
myObject1 = GameObject.Find ("Sphere2");
myObject2 = GameObject.Find ("Sphere1");
myRigidbody= myObject1.GetComponent<Rigidbody2D> ();
myRigidbody2= myObject2.GetComponent<Rigidbody2D> ();
}
}

// Update is called once per frame
void Update () {

}

void FixedUpdate()
{

 if (nObject == 1) {
Vector2 ve = new Vector2 ();
ve.y = y;
ve.x = 0;
myRigidbody.AddForce (ve, ForceMode2D.Impulse);
}
Vector2 input = new Vector2 ();
input = myObject1.transform.position;
inputX = input.x;
inputY = input.y;

input = myObject2.transform.position;
inputX2 = 0;
inputY2 = 0;

float r12 = Mathf.Sqrt (Mathf.Pow (inputX2 - inputX, 2) + Mathf.Pow (inputY2 - inputY, 2));
float cosq12 = (inputX2 - inputX) / (r12);
float sinq12 = (inputY2 - inputY) / (r12);
float G = 7 * Mathf.Pow(10,-1);
f12 = (G * myRigidbody.mass *  myRigidbody2.mass) * (Mathf.Pow (r12, -2));
force1 = new Vector2 ();
force1.x = f12 * cosq12;
force1.y = f12 * sinq12;
myRigidbody.AddForce(force1,ForceMode2D.Force);

}
}

Если не присваивать маленькому телу ForceMode2D.Impulse, то оно просто притянется к большему(что по-идее и должно быть). Но мне нужно получить вращение вокруг большего по эллипсу. Так что, если прикладываю моментальную силу, шар начинает двигаться по неведомой траектории. То есть сначала вращается в одну сторону, потом в другую, потом притягивается, а затем улетает.
Извиняюсь за данный код сразу) Думаю два варианта: проблема в физике или проблема в методах, которые я использую. Но я гуглил и читал документацию:(
  • Вопрос задан
  • 392 просмотра
Подписаться 1 Оценить 9 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы