Untiy3D制作2D游戏的一些心得

时间:2024-04-01 08:45:01

       本人最近迷上了使用Unity3D制作游戏,前身有一些C++的基础,所以学起C#来也是非常快的。主要是通过Unity3D的一些设计思路,增长自己的经验。

下面分享一下我从某视频中学到的一些2D游戏知识。(由于不算新手向,所以写的杂乱一点也没关系哈,我只挑一些重点)

 

Untiy3D制作2D游戏的一些心得

 

工程项目中Canvas,很重要,他就是UI编写的基础。

Untiy3D制作2D游戏的一些心得

视频中将不同显示层上的Canvas采用不同数字表示,简直是太方便了。Untiy3D制作2D游戏的一些心得

可以发现,Order in Layer就是Canvas的显示层,这里数字越大,代表距离屏幕越近,可以显示的越完整。

紧接着分享一段代码,是Unity中物体跟随鼠标旋转的代码。捕鱼达人中,这就是核心逻辑了。

using UnityEngine;

public class GunFollow : MonoBehaviour
{

    public RectTransform UGUICanvas;
    public Camera mainCamera;
    // Update is called once per frame
    void Update()
    {
        Vector3 mousePos;
        RectTransformUtility.ScreenPointToWorldPointInRectangle(UGUICanvas, new Vector2(Input.mousePosition.x, Input.mousePosition.y), mainCamera, out mousePos);//因为这里枪的贴图是使用Rect Transform,所以转换屏幕到世界的坐标点,需要使用这个函数。
        float z;
        if (mousePos.x > transform.position.x)
        {
            z = -Vector3.Angle(Vector3.up, mousePos - transform.position);//枪的正方向与鼠标位置的夹角
        }
        else
        {
            z = Vector3.Angle(Vector3.up, mousePos - transform.position);//枪的正方向与鼠标位置的夹角
        }
        transform.localRotation = Quaternion.Euler(0, 0, z);//用四元数的欧拉角将z转成四元数,因为Rotation只接受四元数。
    }
}
还剩下生成鱼和子弹的代码,我下次再更新,基本上界面的UI都是需要大家熟练使用Unity的界面操作,就可以实现的,代码量很少。