我在JavaScript中使用團結3d的船腳本。它幾乎可以完美運作,除非船隻永遠不會放慢速度,轉彎會導致無限的轉彎,除非您按相反的方向按鍵。我嘗試調整船對象本身的質量,拖動和角度拖動,我甚至在腳本中添加了代碼,它仍然沒有效果。遊戲中沒有其他腳本,除了在船上也有順暢的跟蹤腳本。統一3D - 拖動和角度拖動不工作
#pragma strict
var speed : float = 1.0;
var acceleration : float = 1.0;
var maxspeed : float = 2.0;
var minspeed : float = -0.25;
var heading : float = 0.0;
var rudder : float = 0.0;
var rudderDelta : float = 2.0;
var maxRudder : float = 6.0;
var bob : float = 0.1;
var bobFrequency : float = 0.2;
var rb: Rigidbody;
private var elapsed : float = 0.0;
private var seaLevel : float = 0.0;
private var rudderControl : GameObject;
private var rudderAngle : float = 0.0;
function signedSqrt(x : float){
var r = Mathf.Sqrt(Mathf.Abs(x));
if(x < 0){
return -r;
} else {
return r;
}
}
function Start() {
rb = GetComponent.<Rigidbody>();
}
function Update() {
rb.angularDrag = 0.8;
rb.drag = 1;
// Bobbing
elapsed += Time.deltaTime;
transform.position.y = seaLevel + bob * Mathf.Sin(elapsed * bobFrequency * (Mathf.PI * 2));
// Steering
rudder += Input.GetAxis("Horizontal") * rudderDelta * Time.deltaTime;
if(rudder > maxRudder){
rudder = maxRudder;
} else if (rudder < -maxRudder){
rudder = -maxRudder;
}
heading = (heading + rudder * Time.deltaTime * signedSqrt(speed)) % 360;
// transform.Rotate(0, rudder * Time.deltaTime, 0);
transform.eulerAngles.y = heading;
transform.eulerAngles.z = -rudder;
if(rudderControl){
rudderAngle = ((-60 * rudder)/maxRudder + heading) % 360;
//rudderControl.transform.localEulerAngles.y = (70 * rudderAngle) % 360;
rudderControl.transform.eulerAngles = Vector3(0, rudderAngle, 0);
}
// Sail
speed += Input.GetAxis("Vertical") * acceleration * Time.deltaTime;
if(speed > maxspeed){
speed = maxspeed;
} else if (speed < minspeed){
speed = minspeed;
}
transform.Translate(0, 0, speed * Time.deltaTime);
}
function Awake(){
seaLevel = transform.position.y;
rudderControl = GameObject.Find("rudderControl");
}
我希望這很簡單。任何幫助表示讚賞。
我試過了,它並沒有影響它,但它確實幫助我縮小了問題範圍。 – user3362828