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

Unity 2D实现玩家旋转但跟随相机不旋转的方法

2D俯视角射击游戏:相机跟随玩家但不随玩家旋转的实现方案

你当前的问题是相机作为玩家子物体时,会继承玩家的旋转导致视角偏移,以下是两种可行的解决方法:

方法一:给相机添加旋转锁定脚本

直接给相机挂载一个脚本,强制保持其初始旋转角度,不受父物体旋转影响:

创建CameraLockRotation.cs脚本,代码如下:

using UnityEngine;

public class CameraLockRotation : MonoBehaviour
{
    private Quaternion _originalRotation;

    void Start()
    {
        // 记录相机初始旋转状态
        _originalRotation = transform.rotation;
    }

    void LateUpdate()
    {
        // 每帧重置旋转为初始状态
        transform.rotation = _originalRotation;
    }
}

将该脚本拖到相机对象上即可,相机只会跟随玩家移动,旋转始终保持不变。

方法二:分离玩家移动与旋转层级(推荐)

这种方式更符合游戏对象的结构设计,把玩家的移动和旋转逻辑拆分到不同对象上,从根源避免相机继承旋转:

  1. 调整对象层级

    • 创建空对象命名为PlayerRoot,将玩家的Rigidbody2D组件和PlayerScript脚本移到这个空对象上
    • 将原来的玩家视觉对象(包含SpriteRenderer的对象)设为PlayerRoot的子物体,命名为PlayerVisual
    • 将相机设为PlayerRoot的子物体(而非PlayerVisual的子物体)
  2. 修改PlayerScript代码
    修改旋转逻辑,让PlayerVisual负责朝向鼠标,而不是PlayerRoot:

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

public class PlayerScript : MonoBehaviour
{
    public float moveSpeed = 5f;
    Vector2 movement;
    Vector2 mousePos;
    public Rigidbody2D rb;
    public Camera cam;
    public Transform playerVisual; // 在Inspector中拖入PlayerVisual对象

    void Update()
    {
        movement.x = Input.GetAxisRaw("Horizontal");
        movement.y = Input.GetAxisRaw("Vertical");

        mousePos = cam.ScreenToWorldPoint(Input.mousePosition);
    }

    void FixedUpdate()
    {
        // 控制PlayerRoot移动
        rb.MovePosition(rb.position + movement * moveSpeed * Time.fixedDeltaTime);

        // 计算朝向角度,控制PlayerVisual旋转
        Vector2 lookDir = mousePos - rb.position;
        float angle = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg - 90f;
        playerVisual.rotation = Quaternion.Euler(0, 0, angle);
    }
}

这种结构下,PlayerRoot只负责移动,PlayerVisual负责旋转朝向鼠标,相机跟随PlayerRoot移动但不会继承旋转,同时后续扩展动画、碰撞体等功能时会更灵活。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 09:27:34