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

Unity中翻转Sprite时出现尺寸自动变化问题的技术求助

问题修复方案

根因定位

你的代码存在逻辑覆盖问题:

  1. 你预先定义了角色基准尺寸scale = new Vector3(3, 3, 1f),但在翻转朝向时,直接将localScale赋值为Vector3.one(即尺寸1,1,1)和(-1,1,1),和你的基准尺寸不匹配
  2. Update方法最后一行的transform.localScale = scale;会强制覆盖前面所有对localScale的修改,你前面写的翻转逻辑完全不生效,只会在每次输入变化的那一帧短暂生效,下一帧就被重置回固定尺寸,所以会出现尺寸突变的现象。

修复步骤

  • 调整翻转时的尺寸赋值逻辑,基于你预设的基准scale变量修改X轴符号,不要写死固定值
  • 删除Update方法末尾多余的transform.localScale = scale;语句,避免覆盖翻转逻辑

修正后完整代码

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

public class PlayeMoveLol : MonoBehaviour
{
    [SerializeField] private float speed;
    private Rigidbody2D body;
    // 这里可以直接在Inspector面板调整角色整体大小,无需改代码
    Vector3 scale = new Vector3( 3, 3, 1f );
    private Animator anim;

    private void Awake()
    {
        body = GetComponent<Rigidbody2D>();
        anim = GetComponent<Animator>();
        // 初始化时先设置一次基准尺寸
        transform.localScale = scale;
    }
    private void Update()
    {
        float horizontalinput = Input.GetAxis("Horizontal");
        body.velocity = new Vector2(horizontalinput * speed, body.velocity.y);
        if (Input.GetKey(KeyCode.Space)) {
            body.velocity = new Vector2(body.velocity.x, speed / 3);
        }
        // 翻转逻辑适配基准尺寸
        if (horizontalinput > 0.01f) {
            transform.localScale = new Vector3(scale.x, scale.y, scale.z);
        }
        if (horizontalinput < -0.01f) {
            transform.localScale = new Vector3(-scale.x, scale.y, scale.z);
        }
        anim.SetBool("running", horizontalinput != 0);
        // 删掉了原来覆盖翻转逻辑的赋值语句
    }
}

额外优化建议

如果不希望通过修改Scale翻转(避免后续影响子物体尺寸、碰撞体判定等问题),可以改用SpriteRenderer的flipX属性实现翻转,逻辑更安全:

  1. 先声明private SpriteRenderer sr;
  2. Awake里添加sr = GetComponent<SpriteRenderer>();
  3. 翻转部分的逻辑替换为:
if (horizontalinput > 0.01f) {
    sr.flipX = false;
}
if (horizontalinput < -0.01f) {
    sr.flipX = true;
}

这种方式完全不会修改transform的scale属性,不会触发尺寸变化问题,也不会影响子物体的缩放。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:45:05