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

如何在Unity 2D俯视角游戏中实现瞄准射击机制并修复角色转向问题

2D俯视角角色跟随鼠标转向修复方案

配置检查项(80%的问题都是这里导致的)

  • 打开角色的Rigidbody2D组件面板,检查Constraints下的Freeze Rotation Z没有被勾选,勾选后代码修改旋转不会生效
  • 确认脚本的cam字段已经拖拽赋值了场景中的主摄像机,空引用会导致鼠标坐标转换错误,转向逻辑失效
  • 检查角色对象上是否挂载了其他控制旋转的脚本,若存在移动时修改朝向的代码,直接删除对应逻辑即可

代码优化方案

你现有代码的转向逻辑本身是正确的,以下是调整后的更稳定的版本,修复了斜向移动速度异常的问题:

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

public class script1 : MonoBehaviour
{
    public float moveSpeed;
    public Rigidbody2D rb;
    public Camera cam;

    private Vector2 moveDirection;
    private Vector2 mousePos;

    void ProcessInputs()
    {
        float moveX = Input.GetAxisRaw("Horizontal");
        float moveY = Input.GetAxisRaw("Vertical");
        // 增加归一化处理,避免斜向移动速度比单方向快
        moveDirection = new Vector2(moveX, moveY).normalized;
    }

    void Update()
    {
       ProcessInputs();
       mousePos = cam.ScreenToWorldPoint(Input.mousePosition);
    }

    void FixedUpdate()
    {
        Move();
        RotateToMouse();
    }

    void Move()
    {
        rb.velocity = moveDirection * moveSpeed;
    }

    void RotateToMouse()
    {
        Vector2 lookDir = mousePos - rb.position;
        float angle = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg - 90f;
        rb.rotation = angle;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:36:04