unity从0开始摸鱼日记3,tkDemo1

巧了我就是萌 提交于 2020-03-05 19:52:02

3月5日

今天依旧没有开学

开始学习做一个新的项目,坦克大战demo项目

首先是很普通的右手就行的构建游戏场景,背景色调为黑色,将镜头设为5:4,camera的size设为8.5,这两个值在自己设计游戏时需要反复实验修改,得到最好的用户体验。

导入的图片资源需要注意的要点:

1.需要将图片资源的Texture Type设为Sprite

2.如果是多个图片的裁剪图集,还需要将Sprite Mode设为multipl

关于如何将图集切割为多张图片:

在图片的Inspector中,点击Sprite Editor选项,即可进入切割界面。

然后是创建所有需要的Prefabs,Animation,AnimatorController,这也是很常规的内容,不做赘述。

接下来首先开始编写脚本控制player的移动,创建player脚本,在脚本中进行操作

void Update()
    {
        float h = Input.GetAxisRaw("Horizontal");
        float v = Input.GetAxisRaw("Vertical");
        //移动方法,(x轴/y轴判别*输入参数*移动速度*时间*参考坐标系)
        transform.Translate(Vector3.right * h * MoveSpeed * Time.deltaTime, Space.World);
        transform.Translate(Vector3.up * v * MoveSpeed * Time.deltaTime, Space.World);

    }

这里要注意,和之前的移动方法是两种,之前的是通过刚体以及改变目标位置的方式来移动,这次是直接通过移动方法来移动

然后是坦克的转向问题,有两种解决方案,第一种是在转向时调用相应的朝向的素材图片,第二种是直接使图片绕Z轴进行旋转

这里先运用第一种方法,因为prefab用哪张图片的显示是通过Sprite Renderer渲染器控制的,因此只需要在脚本中得到渲染器组件的引用,然后再转向的时候更改成对应的图片素材即可

获得组件和对应图片

private SpriteRenderer sr;
    public Sprite[] TankSprite; 

    private void Awake()
    {
        sr = GetComponent<SpriteRenderer>();
    }

判断及旋转

        if(h < 0)
        {
            sr.sprite = TankSprite[3];
        }
        else if (h > 0)
        {
            sr.sprite = TankSprite[1];
        }
        if (v < 0)
        {
            sr.sprite = TankSprite[2];
        }
        else if (v > 0)
        {
            sr.sprite = TankSprite[0];
        }

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!