Unity3d中的自旋物理问题
我正在Unity3D从事一个斯诺克游戏项目。我已经达到了斯诺克物理的感觉。但在拍摄旋转镜头时,它正在进行一些有线活动。在向某个方向施加力后,我增加了扭矩。谁能告诉我我到底错过了什么 这是我的密码Unity3d中的自旋物理问题,unity3d,Unity3d,我正在Unity3D从事一个斯诺克游戏项目。我已经达到了斯诺克物理的感觉。但在拍摄旋转镜头时,它正在进行一些有线活动。在向某个方向施加力后,我增加了扭矩。谁能告诉我我到底错过了什么 这是我的密码 using UnityEngine; using System.Collections; public class CueBall : MonoBehaviour { private enum SPIN{ nospin, leftspin,rightspin,topspin,bottomsp
using UnityEngine;
using System.Collections;
public class CueBall : MonoBehaviour {
private enum SPIN{ nospin, leftspin,rightspin,topspin,bottomspin};
private SPIN currentSpin = SPIN.topspin;
private float cueStrength = 1000.0f;
public Transform cueStick;
// Use this for initialization
void Start () {
rigidbody.collisionDetectionMode = CollisionDetectionMode.ContinuousDynamic;
}
// Update is called once per frame
void FixedUpdate () {
if(Input.GetMouseButtonDown(0)){
gameObject.rigidbody.drag = 0.6f;
gameObject.rigidbody.mass = 1.2f;
gameObject.rigidbody.angularDrag = 1.5f;
switch(currentSpin){
case SPIN.topspin :
rigidbody.AddForceAtPosition(cueStick.forward * cueStrength,transform.position,ForceMode.Acceleration);
rigidbody.AddTorque(Vector3.back * cueStrength );
break;
case SPIN.bottomspin:
rigidbody.AddForceAtPosition(cueStick.forward * cueStrength,transform.position,ForceMode.Acceleration);
rigidbody.AddTorque(Vector3.forward * cueStrength );
break;
}
}
}
}
提前谢谢我终于找到了解决办法。事实上,我已经使用了增加力后的扭矩,所以它并没有按照旋转的方向前进。但它应该像先增加扭矩,然后在位置上增加力一样 下面是示例代码。我希望这能帮助其他人了解unity3d中的自旋物理
using UnityEngine;
using System.Collections;
public class CueBall : MonoBehaviour {
private enum SPIN{ nospin, leftspin,rightspin,topspin,bottomspin};
private SPIN currentSpin = SPIN.topspin;
private float cueStrength = 1000.0f;
public Transform cueStick;
// Use this for initialization
void Start () {
rigidbody.collisionDetectionMode = CollisionDetectionMode.ContinuousDynamic;
}
// Update is called once per frame
void FixedUpdate () {
if(Input.GetMouseButtonDown(0)){
gameObject.rigidbody.drag = 0.6f;
gameObject.rigidbody.mass = 1.2f;
gameObject.rigidbody.angularDrag = 1.5f;
switch(currentSpin){
case SPIN.topspin :
rigidbody.AddTorque(Vector3.back * cueStrength );
rigidbody.AddForceAtPosition(cueStick.forward * cueStrength,transform.position,ForceMode.Acceleration);
break;
case SPIN.bottomspin:
rigidbody.AddTorque(Vector3.forward * cueStrength );
rigidbody.AddForceAtPosition(cueStick.forward * cueStrength,transform.position,ForceMode.Acceleration);
break;
case SPIN.leftspin:
rigidbody.AddTorque(Vector3.up * cueStrength);
rigidbody.AddForceAtPosition(cueStick.forward * cueStrength,transform.position,ForceMode.Acceleration);
break;
case SPIN.rightspin:
rigidbody.AddTorque(Vector3.down * cueStrength );
rigidbody.AddForceAtPosition(cueStick.forward * cueStrength,transform.position,ForceMode.Acceleration);
break;
default : // no spin
// no required torque
rigidbody.AddForceAtPosition(cueStick.forward * cueStrength,transform.position,ForceMode.Acceleration);
break;
}
}
}
}
谢谢你现在还不清楚问题是什么(“怪异”可能意味着什么),我恐怕很难用语言来描述。如果你能拍一段视频,也许会有帮助。