unity3d 统一:为什么我的移动不能返回到0值

dbf7pr2w  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(175)

嗨,我刚开始用C#编程,我遇到了一个问题。所有的东西都在工作,只有当按钮没有按下时,值不会回到0,我可以改变移动的方向,但对象不会停止移动...以下是代码!

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Movement : MonoBehaviour
{
    private Rigidbody2D rb2D;
    private float speed = 1f;
    private float moveHorizontal;

    void Start()
    {
         rb2D = GetComponent<Rigidbody2D>();
    }
  
    void Update()
    {
         moveHorizontal = Input.GetAxisRaw("Horizontal");
    }

    void FixedUpdate()
    {
        if (moveHorizontal > 0.1f || moveHorizontal < -0.1f)
        {
            rb2D.AddForce(new Vector2 (moveHorizontal * speed, 0f), ForceMode2D.Impulse);
        }
    }
}
6rvt4ljy

6rvt4ljy1#

我看到你在增加力,但你从来没有在任何地方将速度重置为0
你可以这样做。

if(Mathf.Abs(moveHorizontal) > 0.1f)
{
    ...
}
else 
{ 
    var vel = rb2D.velocity; 
    vel.x = 0; 
    rb2D.velocity = vel; 
}

相关问题