c# - 有没有办法在 Unity 中翻转 Sprite?
问题描述
我正在开发一个 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 度,以防玩家切换重力向左/向右移动
解决方案
假设您指的是SpriteRenderer
您可以使用SpriteRenderer.flipX
并SpriteRenderer.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;
}
推荐阅读
- sql - 在另一个表的主键上创建外键
- javascript - JS:按特定顺序遍历 DOM 树?
- angular - Angular 创建可重用组件
- javascript - 如何将另一个孩子添加到我的 Firebase 集合中?
- python - 使用条件连接 groupby 中的字符串
- swift - 使用 Firebase 存储上传图片
- vba - vba 宏将图像文件名加载到幻灯片而不是图像中
- java - Java Swing BoxLayout:在多面板设置中调整面板之间的空间?
- javascript - 如何让 JS 为整个班级执行?
- javascript - JavaScript/TypeScript 等价于 PHP 的魔法 ::class 常量