使用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
相关产品推荐
相关产品推荐

