我将我的角色粘贴到一个空对象上并将刚体应用到该空对象的脚本(以更改枢轴);然而,这个角色并没有随着这个代码移动:
public class main_character : MonoBehaviour
{
public float speed;
private float max_vel = 4f;
private bool grounded = true;
private bool flip = true;
private Rigidbody2D main_vel;
private void Awake()
{
main_vel = GetComponent<Rigidbody2D>();
}
void FixedUpdate()
{
float now_vel = Mathf.Abs(main_vel.velocity.x);
if (Input.GetKey("d") && flip)
{
flip_side();
if (now_vel < max_vel)
{
main_vel.AddForce(new Vector2(speed, 0f) * Time.deltaTime);
}
}
if(Input.GetKey("a") && !flip)
{
!flip_side();
if (now_vel < max_vel)
{
main_vel.AddForce(new Vector2(-speed, 0f) * Time.deltaTime);
}
}
}
void flip_side()
{
flip = !flip;
transform.Rotate(0f, 180f, 0f);
}
}
最佳答案
你要么需要在类的顶部添加一个速度值,要么动态生成它。我还会在速度设置为零时按下按钮时捕获异常或调试。 如果速度加快,您将需要构建它或在更新中调用它,并根据增量时间给它一个初始速度+速度。我也会将它限制在最大速度,因为它可以防止游戏引擎跟踪大值。
--关于空父的情况,如果没有物理组件,子应该保留其父的运动。话虽这么说,你必须有一个刚体来增加力量。您看起来可能正在使用 2d,所以我对这些刚体的经验较少,但我想它必须不是运动学的才能像您一样接受力。检查之后,我可能会添加一些调试,从你的 max_vel 检查中发布你的 vector2 和速度。
关于c# - 为什么我的角色没有随着这个代码移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68052205/