【问题标题】:Is There a Way to Flip a Sprite in Unity?有没有办法在 Unity 中翻转 Sprite?
【发布时间】:2021-04-14 04:41:42
【问题描述】:

我正在开发一个 2D Unity 项目,它是一个平台游戏,但您可以通过重力控制角色。对于游戏,我需要让它当你转动重力说,向上,它应该翻转精灵倒置。到目前为止,这是我在 C# 脚本中附加到角色游戏对象的代码。

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

public class GravityController2d : MonoBehaviour
{
enum GravityDirection { Down, Left, Up, Right };
public Animator animator;
public GameObject Game_object;
private Vector3 chestPos = new Vector3(6.69f, 1.45f, 0.0f);

void Start()
{
    Physics2D.gravity = new Vector2(0f, -9.8f);
}

void FixedUpdate()
{   
    if (Input.GetKeyDown(KeyCode.DownArrow))
    {
        Physics2D.gravity = new Vector2(0f, -9.8f);
        //flip
    }

    if (Input.GetKeyDown(KeyCode.LeftArrow))
        {
            Physics2D.gravity = new Vector2(-9.8f, 0f);
            //flip
        }
    
    if (Input.GetKeyDown(KeyCode.UpArrow))
        {
            Physics2D.gravity = new Vector2(0f, 9.8f);
            //flip
        }

    if (Input.GetKeyDown(KeyCode.RightArrow))
        {
            Physics2D.gravity = new Vector2(9.8f, 0f);
            //flip
        }

    
} 
}

编辑:我使用的标签是 Unity2D,但它自动将其更正为 unity3d,所以这是我的借口。

另外:它还需要能够翻转 90 度,以防玩家切换重力向左/向右移动

【问题讨论】:

  • unity2dunity3d 是同义词 .. 它是相同的游戏引擎,只是忽略了 Z 轴;)我也怀疑你会总是想要翻转精灵...可能只有当它没有朝向正确的方向时;)
  • 欢迎新用户,您正在寻找flipX .. docs.unity3d.com/ScriptReference/SpriteRenderer-flipX.html
  • Uhh .. Der 已经完美解释了,对不起! :)
  • 我只需要将它旋转 90 度,我需要它,因为我想在我的游戏中改变重力时翻转它

标签: c# unity3d


【解决方案1】:

假设您指的是SpriteRenderer,您可以使用SpriteRenderer.flipXSpriteRenderer.flipY 并检查您的重力方向,例如

// Link in the Inspector
[SerializeField] SpriteRenderer spriteRenderer;

然后

private void UpdateSpriteFlip()
{
    // The conditions according to your needs of course
    spriteRenderer.flipX = Physics2D.gravity.x < 0;
    spriteRenderer.flipY = Physics2D.gravity.y > 0;
}

【讨论】:

  • pff 更容易将 y 旋转更改 180,书呆子 xD
  • @Leoverload ,绝对不要使用翻转功能。关于双方是否都被渲染等问题是一个微妙的问题。翻转总是有效的,这是正常的做法,不会改变物理、方向逻辑等。
  • 这在 z 轴上仍然有效吗?如果您只想将其旋转 90 度,这是否有效?你会怎么做?
  • @AbhijitPrajapati 它正在按照您的要求翻转精灵;)它根本不旋转它.. 对于旋转,您将再次使用 transform.rotationtransform.Rotaterigidbody.rotation
  • @derHugo 但是这个答案只能翻转/旋转 90 度吗?
猜你喜欢
  • 2022-08-14
  • 2021-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-20
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多