c# - 如何根据 Unity 中的方向或运动来更改精灵?
问题描述
我正在制作一个 2D 平台游戏,并想知道如何在 Unity 中对运动进行尖顶更改。我是编码新手,Unity 并从教程中获得了这个脚本。有人可以给我这个问题的答案并解释一下吗?
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
[SerializeField] private float speed;
private Rigidbody2D body;
private void Awake()
{
body = GetComponent<Rigidbody2D>();
}
private void Update()
{
body.velocity = new Vector2(Input.GetAxis("Horizontal") * speed, body.velocity.y);
if (Input.GetKey(KeyCode.Space))
body.velocity = new Vector2(body.velocity.x, speed);
}
}
解决方案
您可以访问 上的SpriteRenderer
组件gameObject
来更改 Player 的 Sprite。
以下是它在您的代码中的样子:
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
[SerializeField] private float speed;
[SerializeField] private Sprite newSprite;
private Rigidbody2D body;
private SpriteRenderer spRenderer;
private void Awake()
{
body = GetComponent<Rigidbody2D>();
spRenderer= GetComponent<SpriteRenderer>();
}
private void Update()
{
body.velocity = new Vector2(Input.GetAxis("Horizontal") * speed, body.velocity.y);
if (Input.GetKey(KeyCode.Space))
body.velocity = new Vector2(body.velocity.x, speed);
//Change sprite
spRenderer.sprite = newSprite;
}
}
推荐阅读
- java - Java:如何使用记录器将多个类记录到同一个文件中?
- php - 使用 Symfony 自定义表单
- javascript - 使用 moment.js,如果我使用 VPN,我的日期或日期时区可以更改吗?
- go - 结构声明样式之间的语法/语义差异
- jqgrid - Jqgrid - 标题栏中只出现一个搜索选项
- java - 正则表达式模式验证重复字符的计数
- uipath - 自动格式化/美化 UIPath 工作流程设计
- vuforia - 具有固定尺寸的 Vuforia 视频播放
- sql-server - 将 varchar 转换为小数
- machine-learning - 在 K-Means 聚类算法(sklearn)中,如何将欧几里得距离覆盖到某个距离