我正在开发一个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;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句