ฉันทำงานเกี่ยวกับโครงการที่คล้ายกันโดยใช้ Zero-G ซึ่งฉันต้องการวัตถุเกมทั้งหมดเพื่อสร้างและตอบสนองต่อแรงโน้มถ่วงและแม่เหล็กไฟฟ้าตามปริมาณความหนาแน่นมวลพลังงานและการนำไฟฟ้า ฉันค่อนข้างใหม่เกี่ยวกับการเขียนสคริปต์ แต่ฉันได้ทำการปรับเปลี่ยนสคริปต์ด้านบนเล็กน้อยเพื่อให้มันทำงานกับฉันในพื้นที่ 3 มิติ (เท่าที่เกี่ยวข้องกับแรงโน้มถ่วง ... เกือบ ... ):
using UnityEngine;
using System.Collections;
public class DynamicWeightAnalysis : MonoBehaviour {
//Declare Variables:
//BBB adding volume calculations
//NOPE
//BBB adding density (...does nothing yet...)
public float density;
//BBB NOPE!
//Strength of attraction from your game-object, ideally this will be derived from a calculation involving the objects volume and density, but for now it's entered from the inspector)
public float RelativeWeight;
//BBB Here, we name our target object (s)
GameObject blockALPHA;
//Initialise code:
void Start ()
{
//BBB here, we define our target object by searching for its tag (setup in editor)
blockALPHA = GameObject.FindGameObjectWithTag("Block ALPHA");
}
//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 = blockALPHA.transform.position - transform.position;
//Offset Squared:
magsqr = offset.sqrMagnitude;
//Check distance is more than 1 to prevent division by 0 (because my blocks are all 1x1x1 so, any closer than 1 and they'd be intersecting)
if (magsqr > 1f)
{
//Create the gravity- make it realistic through division by the "magsqr" variable
GetComponent<Rigidbody>().AddForce((RelativeWeight * offset.normalized / magsqr) * GetComponent<Rigidbody>().mass);
}
}
}
อย่างที่คุณเห็นฉันยังคงทำงานอยู่โดยพื้นฐานแล้วการเพิ่มทั้งหมดของฉันจนถึงคำอธิบายประกอบด้วย "BBB" ยังไม่ทำงานตามที่ฉันต้องการ แต่เมื่อมันมาถึงมันทำให้วัตถุ "block ALPHA" ของฉันสามารถโต้ตอบกับแรงโน้มถ่วงในแบบ 3 มิติกับวัตถุ "block ALPHA" อื่น ๆ ในวิธีที่คาดการณ์ได้อย่างเป็นธรรม (แม้ว่าเมื่อวางบล็อกสองบล็อกขึ้นไปบล็อกสุดท้ายจะเป็น "ตัวดึงดูด" เสมอและจะไม่หยุดนิ่งจนกว่าจะเกิดการชนกันซึ่งฉันกำลังทำงานอยู่ ... จะช่วยให้ชื่นชม :)) หวังว่าจะช่วย ..