You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Rigidbody2D.MovePosition结合鼠标Delta导致移动抖动问题求助

问题描述
  • 开发自定义光标解谜游戏,使用Unity新输入系统
  • 直接跟随鼠标Delta移动光标时流畅,但无法处理碰撞
  • 使用Rigidbody2D.MovePosition或设置Velocity实现带碰撞移动时,出现移动不流畅、位置偏移、抖动问题
  • 已尝试调整Rigidbody2D参数、将移动代码移至FixedUpdate,均未解决
  • Unity版本:2020.3.26f1
完整脚本
using UnityEngine;
using UnityEngine.InputSystem;

public class CursorScript : MonoBehaviour
{
    #region Input
    private PlayerInput playerInput;

    private InputAction mousePosition;
    private InputAction deltaMousePosition;
    private InputAction click;

    private void Awake()
    {
        playerInput = GetComponent<PlayerInput>();
        mousePosition = playerInput.actions["MousePosition"];
        click = playerInput.actions["Click"];
        deltaMousePosition = playerInput.actions["MouseDelta"];
    }

    #endregion

    public Camera cam;
    public float sensitivity;
    public SpriteRenderer spriteRenderer;
    public Sprite[] sprites;

    void Start()
    {
        Cursor.lockState = CursorLockMode.Locked;
        Cursor.visible = false;
    }

    void Update()
    {
        Vector2 realMousePosition = cam.ScreenToWorldPoint(mousePosition.ReadValue<Vector2>());

        // 光标移动代码
        GetComponent<Rigidbody2D>().MovePosition(new Vector2(transform.position.x, transform.position.y) + deltaMousePosition.ReadValue<Vector2>() * sensitivity);
        
        spriteRenderer.sprite = sprites[0];
        if (click.ReadValue<float>() == 1)
            spriteRenderer.sprite = sprites[1];
    }
}

内容的提问来源于stack exchange,提问作者chkn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 21:17:35