延长我以前的question,我的角色(暂时)是一个立方体。多维数据集使用C#脚本和Rigid Body组件进行映射。
我使用以下代码来改变我的角色(这是一个僵硬的身体)的方向:
public float speed = 0;
public Vector3 jumpHeight = new Vector3();
public bool isOnGround = true
void Update () {
bool isTouched = false;
if (Input.touchCount > 0 && Input.touches[0].phase == TouchPhase.Began) {
isTouched = true;
}
if ((Input.GetButtonDown("Jump") || isTouched) && isOnGround) {
isOnGround = false;
rigidbody.AddForce(jumpHeight, ForceMode.VelocityChange);
}
if (Input.GetKeyDown(KeyCode.LeftArrow)) {
transform.Rotate(0, -90, 0);
rigidbody.velocity = Vector3.zero;
rigidbody.angularVelocity = Vector3.zero;
}
if (Input.GetKeyDown(KeyCode.RightArrow)) {
transform.Rotate(0, 90, 0);
rigidbody.velocity = Vector3.zero;
rigidbody.angularVelocity = Vector3.zero;
}
}
void FixedUpdate() {
if (isOnGround) {
rigidbody.AddForce(transform.forward * speed, ForceMode.Acceleration);
}
}
其中isOnGround
是一个布尔值,当Runner对象触地时设置为true。但是,在它离开地面之前,它沿着Z轴移动。当装置离开地面时,它会滑动到X-Z轴。我错过了什么?
注意:鉴于Runner对象的质量为3。
答案 0 :(得分:0)
如果jumpHeight
设置为Vector3(0,7,0)
,问题就消失了,Runner对象与轴跳跃对齐。