Tôi đã làm việc trong một dự án tương tự dựa trên Zero-G, trong đó tôi cần tất cả các đối tượng trò chơi để tạo và phản ứng với cả lực hấp dẫn và lực điện từ dựa trên khối lượng, mật độ, khối lượng, năng lượng và độ dẫn của chúng. Tôi còn khá mới với kịch bản, nhưng tôi đã thực hiện một vài sửa đổi cho kịch bản ở trên để làm cho nó hoạt động trong không gian 3D (khi có liên quan đến trọng lực ... gần như ...):
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);
}
}
}
Như bạn có thể thấy, tôi vẫn đang làm việc với nó, về cơ bản tất cả các bổ sung của tôi cho đến nay, được chú thích bằng "BBB", vẫn chưa hoạt động như tôi muốn. Nhưng như hiện tại, nó cho phép các đối tượng "chặn ALPHA" của tôi tương tác hấp dẫn trong 3d với các đối tượng "chặn ALPHA" khác theo cách khá dễ đoán. (mặc dù, khi đặt hai hoặc nhiều khối, khối cuối cùng luôn là "điểm thu hút" và sẽ đứng yên cho đến khi xảy ra va chạm. Tôi đang làm việc trên ... sự giúp đỡ sẽ được đánh giá cao :)) Hy vọng điều đó sẽ giúp ..