Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 地心引力的作用很奇怪_Unity3d_Unityscript_Gravity - Fatal编程技术网

Unity3d 地心引力的作用很奇怪

Unity3d 地心引力的作用很奇怪,unity3d,unityscript,gravity,Unity3d,Unityscript,Gravity,我想在Unity中进行简单的重力模拟,所以我编写了这个UnityScript(使用wikipedia.com上关于重力的信息): var类型:字符串; var质量:双倍; 风险值密度:双倍; 风险价值量:两倍; var曲面:双; var半径:双; var isStatic:布尔值; var-onRails:boolean; var totalForce:两倍; var gravCon:双; var-SOI:double; var-insiof:游戏对象; var距离:双倍; 函数启动(){ gr

我想在Unity中进行简单的重力模拟,所以我编写了这个UnityScript(使用wikipedia.com上关于重力的信息):

var类型:字符串;
var质量:双倍;
风险值密度:双倍;
风险价值量:两倍;
var曲面:双;
var半径:双;
var isStatic:布尔值;
var-onRails:boolean;
var totalForce:两倍;
var gravCon:双;
var-SOI:double;
var-insiof:游戏对象;
var距离:双倍;
函数启动(){
gravCon=0.0000000000667384808080;
Time.timeScale=3;
Radius=gameObject.transform.localScale.x;
体积=(4/3)*(数学功率(半径,3)*数学PI);
表面=4*Mathf.PI*Mathf.Pow(半径,2);
密度=质量/体积;
如果(isStatic==true){onRails=false;gameObject.GetComponent。(.IsKinetic=true;}
}
函数更新(){
如果(isStatic==false){
if(onRails==false){
距离=Mathf.Sqrt(Mathf.Pow(gameObject.transform.position.x-insiof.transform.position.x,2)+Mathf.Pow(gameObject.transform.position.y-insiof.transform.position.y,2));
totalForce=gravCon*((gameObject.GetComponent.(.Mass*insiof.GetComponent.(.Mass)/Mathf.Pow(距离,2));
gameObject.GetComponent.(.AddForce)((insiof.transform.position-gameObject.transform.position)*totalForce/Mass*Time.deltaTime);
}
}
}

我创建了两个游戏对象:
Sol
spacer
(它们是相同的,但是
Sol
是静态的)。运行我的项目后,
航天器
的路径如下所示:

但它看起来应该与此类似:

我做错了什么?我解决了我的问题。 我换了

gameObject.GetComponent.<Rigidbody2D>().AddForce((inSOIof.transform.position - gameObject.transform.position) * totalForce/Mass * Time.deltaTime);
gameObject.GetComponent.().AddForce((insiof.transform.position-gameObject.transform.position)*总力/质量*时间.deltaTime);

var方向:Vector3=insiof.transform.position-transform.position;
gameObject.GetComponent.(.AddForceAtPosition((总力/质量)*Time.deltaTime*direction.normalized,transform.position);

如果需要,您可以将其标记为正确答案。
gameObject.GetComponent.<Rigidbody2D>().AddForce((inSOIof.transform.position - gameObject.transform.position) * totalForce/Mass * Time.deltaTime);
var direction : Vector3 = inSOIof.transform.position - transform.position;
    gameObject.GetComponent.<Rigidbody2D>().AddForceAtPosition((totalForce/Mass) * Time.deltaTime * direction.normalized, transform.position);