提问者:小点点

为什么我的角色没有随着这个代码移动?


我将角色粘贴到一个空对象,并将刚体脚本应用到该空对象(以更改轴)。

使用系统。收藏;系统收藏。通用的联合发动机;

公共类主要特征:单一行为{公共浮动速度;

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);
}

}


共1个答案

匿名用户

您要么需要在类的顶部添加一个速度值,要么动态生成它。我也会把一个例外或调试,抓住当你按下按钮,而速度设置为零.如果速度加速,你将需要建立它或调用它在更新,并给它一个初始速度的基础上增量时间的速度。我也会把它夹到最大速度,因为它可以防止游戏引擎跟踪大的值。

--关于空父母的情况,如果没有物理成分,孩子应该保留它的父母的运动。也就是说,你必须有一个刚体来加力。你看起来像你可能使用2d,所以我对这些刚体的经验较少,但是我想它不一定是运动学的,不能像你现在这样接受力。检查之后,我可能会添加一些调试,从max_vel检查中发布矢量2和速度。