📅  最后修改于: 2023-12-03 14:48:12.278000             🧑  作者: Mango
Unity 是一款跨平台游戏引擎,并且也支持 2D 游戏开发。我们可以使用 Unity 的 2D 外观来创建一个 2D 的 Topdown 游戏。在本文中,我们会详细讲解如何使用 Unity 的 2D 外观来创建这样一款游戏。
在创建新项目之前,确保已经安装好 Unity。然后打开 Unity,选择 New Project
创建一个新项目。输入项目名称并选择项目路径,然后点击 Create
创建新项目。在创建新项目之后,你应该能够看到一个空的场景。
接着,我们需要导入一些资源来创建 Topdown 2D 游戏。在项目中选择 Assets
,然后右键选择 Import Package -> 2D
,导入 2D 相关的资源。在导入完之后,你应该能够看到一些新的文件和文件夹,包括 Sprites
和 Prefabs
文件夹。
接下来,我们需要设置相机和背景,创建 Topdown 2D 的视觉效果。在场景中选择主相机,然后将它的位置设置为 (0, 0, -10)
。然后创建一个新空物体作为背景,并且将它的位置设置为 (0, 0, 0)
。
现在我们需要从 Assets/Sprites
文件夹中选择一个背景贴图。你可以选择你喜欢的任意一张贴图,只需要确保贴图是 2D 的。导入贴图之后,将它拖拽到背景空物体上,并且将贴图的 Scale 设置为 (25, 25, 1)
,这样背景贴图就会自适应屏幕大小。
现在我们可以开始创建 Topdown 2D 游戏的角色和动画。在场景中创建一个新的空物体作为角色,并且在该空物体下创建子物体 Sprite
,用于显示角色贴图。从 Assets/Sprites
文件夹中选择一张角色贴图,然后将它拖拽到 Sprite
子物体上,这样角色贴图就会显示在场景中。
接下来,我们需要给角色添加动画。创建一个名为 Animations
的文件夹,并且在该文件夹下创建新的动画剪辑。为角色动画创建一个新的动画控制器 Animator
,并将它拖拽到角色的空物体上。将动画控制器中的默认状态名称更改为 Idle
,并在该状态下为角色添加 Idle
动画剪辑。然后创建新的状态 Run
,并在该状态下为角色添加 Run
动画剪辑。
现在我们添加角色移动脚本。在角色空物体上创建新的 C# 脚本,并将脚本名称更改为 PlayerMovement
。然后将该脚本挂载到角色空物体上,并按下代码片段进行编写。
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
public float speed;
private Rigidbody2D rb;
private Vector2 moveAmount;
void Start()
{
rb = GetComponent<Rigidbody2D>();
}
void Update()
{
Vector2 moveInput = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
moveAmount = moveInput.normalized * speed;
}
void FixedUpdate()
{
rb.MovePosition(rb.position + moveAmount * Time.fixedDeltaTime);
}
}
这个脚本允许玩家使用 WASD 或方向键控制角色移动。
现在我们可以创建 Topdown 2D 游戏的敌人。在场景中创建一个新的敌人空物体,并且为它添加与角色相同的精灵渲染器和碰撞器组件。然后从 Assets/Sprites
文件夹中选择一个敌人贴图,并将它拖拽到敌人空物体的精灵渲染器上。
然后我们需要为敌人添加移动脚本。创建新的 C# 脚本 EnemyMovement
,并将它挂载到敌人空物体上。在脚本中按下以下代码片段进行编写。
using UnityEngine;
public class EnemyMovement : MonoBehaviour
{
public float speed;
private Rigidbody2D rb;
private Transform target;
private Vector2 moveAmount;
void Start()
{
rb = GetComponent<Rigidbody2D>();
target = GameObject.FindGameObjectWithTag("Player").GetComponent<Transform>();
}
void FixedUpdate()
{
Vector2 targetPosition = new Vector2(target.position.x, target.position.y);
Vector2 currentPosition = new Vector2(transform.position.x, transform.position.y);
Vector2 moveDir = (targetPosition - currentPosition).normalized;
moveAmount = moveDir * speed;
rb.MovePosition(rb.position + moveAmount * Time.fixedDeltaTime);
}
}
这个脚本允许敌人向玩家移动。
当敌人碰到角色时,游戏将会结束。为角色空物体添加碰撞器组件,并在脚本中按以下代码片段进行编写。
using UnityEngine;
using UnityEngine.SceneManagement;
public class PlayerCollision : MonoBehaviour
{
void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag == "Enemy")
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
}
}
这个脚本会检测角色是否碰到了敌人。如果是,它会重新加载当前场景。
到此,我们已经学习了如何使用 Unity 的 2D 外观来创建 Topdown 2D 游戏。我们学习了如何设置相机和背景,创建角色和敌人,并给它们添加移动脚本。我们还学习了如何添加碰撞器组件和游戏结束逻辑。我们希望这篇文章能够对你有所帮助,如有任何问题,请随时在评论中留言。