1
好的,在這裏!我使用的是Unity,主要是java代碼,儘管也可以使用c#。圍繞3d球體的球運動
在我的遊戲中,玩家控制一個球(剛體),應用球物理並使用collisons完成工作,並且必須引導自己圍繞一顆行星Mario Galaxy esque。
我遇到的問題是,控制系統似乎與我正在緊張的事情相反,取決於我在這個星球上的位置。有沒有辦法來約束控制系統,使無論什麼行星或照相機的方向,向上是永遠向前,向左總是留給等等
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 2012-03-15 14:25:45
將宇宙移動到球的周圍而不是宇宙周圍的球。 – 2012-03-15 14:27:40
您可能會對[此Arcball實現]感興趣(http://nehe.gamedev.net/tutorial/arcball_rotation/19003/) – Shai 2012-03-15 14:37:21