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