ここに行く!私はユニティを使用していますが、コードはC#でも使えますが、主にjavaです。3d球の周りのボールの動き
私のゲームでは、プレイヤーは球体(剛体)をコントロールし、ボール物理学が適用され、コリソンで作業が完了しており、マリオギャラクシーエスケイの周りを自分自身で案内しなければなりません。
私が抱えている問題は、私が惑星上のどこにいるかによって、制御システムが私が押しているものの逆をするように見えるということです。惑星やカメラの方向がどんな方向であっても、常に前方に、左には常に残されるように制御システムを拘束する方法はありますか?
I have found some documentation regarding spherical corodinate systemsこれが行く方法であるかどうかは不明ですもし私がその問題を過度に複雑にしていたら。
は、コードは、地球上のプレーヤーのボールをキープするために使用: `/ *
FauxGravityAttractor.js
// Set to true for mono-directional gravity
var useLocalUpVector : boolean = false;
// Force applied along gravity up-vector (negative = down)
var fauxGravity = -10.0;
function Attract (body : FauxGravityBody){
var gravityUp : Vector3;
var localUp: Vector3;
var localForward : Vector3;
var t : Transform = body.transform;
var r : Rigidbody = body.rigidbody;
// Figure out the body's up vector
if(useLocalUpVector){
gravityUp = transform.up;
} else {
gravityUp = t.position - transform.position;
gravityUp.Normalize();
}
// Accelerate the body along its up vector
r.AddForce(gravityUp * fauxGravity * r.mass);
r.drag = body.grounded ? 1 : 0.1;
// If the object's freezerotation is set, we force the object upright
if(r.freezeRotation){
// Orient relatived to gravity
localUp = t.up;
var q = Quaternion.FromToRotation(localUp, gravityUp);
q = q * t.rotation;
t.rotation = Quaternion.Slerp(t.rotation, q, 0.1);
localForward = t.forward;
}
}'
とボールの動きをスクリプト:
using UnityEngine;
using System.Collections;
public class MarbleControl : MonoBehaviour {
public float movementSpeed = 6.0f;
void Update() {
Vector3 movement = (Input.GetAxis("Horizontal") * Vector3.left * movementSpeed) + (Input.GetAxis("Vertical") * -Vector3.forward *movementSpeed);
rigidbody.AddForce(movement, ForceMode.Force);
}
void OnTriggerEnter (Collider other ) {
if (other.tag == "Pickup")
{
MarbleGameManager.SP.FoundGem();
Destroy(other.gameObject);
}
}
}
あなたのヘルプははるかに高く評価されます。
乾杯サム
これは本当にボールの動きにどのように影響しているかによって異なります。より詳細な情報を提供できますか?おそらく一部のコードですか?どのようにボールを動かすのですか?それが地球上にとどまることをどうやって確認しますか?要するに、あなたのコントロールは、ボールに対するローカルなオブジェクト空間ではなく、aboslute座標/ワールド空間に基づいているように思えます。 – Supr
宇宙の周りのボールではなく、ボールの周りの宇宙を動かします。 –
[このArcballの実装](http://nehe.gamedev.net/tutorial/arcball_rotation/19003/)にも興味があるかもしれませんが、 – Shai