【发布时间】:2021-06-30 19:58:53
【问题描述】:
所以昨天我完成了我的第一个 gamejam 游戏,我构建了它并将它上传到了 itch.io。但是当我回到那个 todat 时,我看到有人说我的球员运动不起作用,而它在团结本身内部起作用。玩完构建后,我还注意到它不起作用。但我就是不知道为什么不,所以有什么可能使它不起作用。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player_Movement : MonoBehaviour
{
public Rigidbody rb;
public float X_Axis;
public float Z_Axis;
public float force;
public bool Forward_backward;
public bool leftward_rightward;
void Start()
{
GetComponent<Rigidbody>().freezeRotation = true;
Forward_backward = true;
leftward_rightward = true;
force = 5f;
}
public void Update()
{
//Sideward
if (Input.GetKey ("a"))
{
if (leftward_rightward == true)
{
leftward_rightward = false;
Debug.Log("leftward_rightward is false");
}
}
if (Input.GetKey("d"))
{
if (leftward_rightward == false)
{
leftward_rightward = true;
Debug.Log("leftward_rightward is true");
}
}
if (leftward_rightward == true)
{
X_Axis = force;
}
if (leftward_rightward == false)
{
X_Axis = force * -1;
}
Vector3 movement = new Vector3(Input.GetAxis("Horizontal"), 0f, 0f);
if (Input.GetKey("w"))
{
rb.AddForce(new Vector3(0f, 0f, Z_Axis));
}
if (Input.GetKey("s"))
{
rb.AddForce(new Vector3(X_Axis, 0f, 0f));
}
}
注意:a 和 d 键的输入有效,但这是切换布尔值。真正的运动(带有 w 和 s)不起作用。
我尝试查看游戏日志,但找不到任何东西
【问题讨论】:
-
一般来说,宁愿尝试使用
GetKey(KeyCode.W)等,该页面是否正确地向前移动键盘和鼠标? -
a/d 可以使用 S 键左右移动,左右移动可以使用 W 键上下移动。我应该使用
GetKey(KeyCode.W)而不是Input.GetKey ("w") -
我看到了一个
public RigidBody rb;,但我没有看到你在开始时设置它(即void Start() { rb = GetComponent<RigidBody>();...因为你在rb上使用了AddForce,这可能是个障碍吗?make @ 987654327@ private 并在 Start 中设置 ;-) -
在 Unity 编辑器中,您可以将每个带有刚体的对象拖到该插槽中,它将使用该刚体。我不认为这是解决方案,因为它在编辑器中运行良好