📜  unity topdown 2d 外观 - C# (1)

📅  最后修改于: 2023-12-03 14:48:12.278000             🧑  作者: Mango

Unity Topdown 2D 外观 - C#

Unity 是一款跨平台游戏引擎,并且也支持 2D 游戏开发。我们可以使用 Unity 的 2D 外观来创建一个 2D 的 Topdown 游戏。在本文中,我们会详细讲解如何使用 Unity 的 2D 外观来创建这样一款游戏。

创建新项目

在创建新项目之前,确保已经安装好 Unity。然后打开 Unity,选择 New Project 创建一个新项目。输入项目名称并选择项目路径,然后点击 Create 创建新项目。在创建新项目之后,你应该能够看到一个空的场景。

导入资源

接着,我们需要导入一些资源来创建 Topdown 2D 游戏。在项目中选择 Assets,然后右键选择 Import Package -> 2D,导入 2D 相关的资源。在导入完之后,你应该能够看到一些新的文件和文件夹,包括 SpritesPrefabs 文件夹。

设置相机和背景

接下来,我们需要设置相机和背景,创建 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 游戏。我们学习了如何设置相机和背景,创建角色和敌人,并给它们添加移动脚本。我们还学习了如何添加碰撞器组件和游戏结束逻辑。我们希望这篇文章能够对你有所帮助,如有任何问题,请随时在评论中留言。