绥化地图:Unity引擎入门——制作第一个2D游戏(2)角色移动与动画

admin 6个月前 (04-09) 科技 39 0

在上一节的内容里,我们已经建立出了一个主角,也搭建了一个简朴的场景。

传送门:https://www.cnblogs.com/zny0222/p/12653088.html

既然有了主角,要怎样才气让主角动起来呢?

这时候我们就需要写一些简朴的代码,来控制我们人物的移动。

如图所示,我们新建一个文件夹,用来保留我们的剧本。

在制作游戏的过程中,我们应该分门别类的存放素材,这样才气利便治理。

建立好文件夹之后,新建一个C#剧本,而且把剧本挂到我们的主角上,只要拖拽已往就好啦!

在最先编写代码之前,我们先领会一下unity当中的Input Manager

在左上角找到编辑 -> 项目设置 -> InputManager

我们先从水平移动最先,在InputManager中找到“水平”,发现对应的名称是“Horizontal”。

而且对应的按键是方向键的左键和右键,若是你不喜欢这样,也可以更改为其他的按键。

让我们记着这些信息,然后最先编写代码吧!(若是你还没有vs,请先下载安装vs)

双击我们的剧本,unity会自动在vs当中打开剧本。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MyPlayer : MonoBehaviour
{
    public Rigidbody2D Pl;
    public float speed;
    
    void Start()
    {
        
    }

    void Update()
    {
        Move();
    }

    void Move()
    {
        float horizontalmove = Input.GetAxisRaw("Horizontal"); // 从 input manager 吸收“水平”输入的值。
        Pl.velocity = new Vector2(horizontalmove * speed, Pl.velocity.y);
        if (horizontalmove != 0)
        {
            transform.localScale = new Vector3(horizontalmove, 1, 1); // 控制角色转身
        }
    }

}

可以看到,我们使用了2个变量。第一个变量Pl,用来获取角色的刚体。第二个变量speed,用来控制角色行走的速率。为什么都界说为public的变量呢?

这是由于,界说为public的变量,可以直接在unity引擎中看到。我们可以直接把组件拖拽上去,或是直接在unity界面修改变量的数值。这样做可以便于我们日后的改动。固然,不是所有变量都应该界说为public哦。

写好了这些代码之后(代码在保留后才会生效,不要忘了 ctrl + s 哦),主角就可以横向移动了!

若是你的主角在走路时摔倒了,只要在刚体的设置中,将冻结旋转Z轴勾上就好啦。

还记得在上一节里,我们制作主角的碰撞时,使用的是两个碰撞器这时候就体现出效果啦!由于瓦片舆图的有些地方可能并不是那么正确,若是只用一个方形的碰撞器,方形碰撞器的直角可能会被瓦片舆图上的小突起给卡住。为了制止这个问题,我们在主角的下半部门接纳圆形的碰撞器,这样就不会被卡住了。

做到这里,我们的人物还没有任何动作,只能横向的平移。接下来,让我们一起给主角添加动画效果吧!

public Rigidbody2D Pl;
public float speed;
public Animator anima;

首先,我们要新增一个动画器的变量,我给它起名叫anima,你也可以取其他名字。

绥化地图:Unity引擎入门——制作第一个2D游戏(2)角色移动与动画 第1张

然后给主角添加一个动画器,并拖拽到我们的剧本上。接下来就可以最先制作了。

点击 窗口 -> 动画 -> 动画 ,并找到素材包中的动画素材。

绥化地图:Unity引擎入门——制作第一个2D游戏(2)角色移动与动画 第2张

绥化地图:Unity引擎入门——制作第一个2D游戏(2)角色移动与动画 第3张绥化地图:Unity引擎入门——制作第一个2D游戏(2)角色移动与动画 第4张

完成了以上步骤,我们就拥有站立和跑动两个动画了。那么什么时候使用这两个动画呢?

点击 窗口 -> 动画 -> 动画器,并完成以下操作。绥化地图:Unity引擎入门——制作第一个2D游戏(2)角色移动与动画 第5张

确保站立的动画是默认状态,在站立跑动这两个动画之间建立过渡。添加一个float参数,用来判断站立跑动之间的转换。

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MyPlayer : MonoBehaviour
{
    public Rigidbody2D Pl;
    public float speed;
    public Animator anima;
    void Start()
    {
        
    }

    void Update()
    {
        Move();
    }

    void Move()
    {
        float horizontalmove = Input.GetAxisRaw("Horizontal");
        Pl.velocity = new Vector2(horizontalmove * speed, Pl.velocity.y);
        if (horizontalmove != 0)
        {
            transform.localScale = new Vector3(horizontalmove, 1, 1);
        }
        anima.SetFloat("running", Mathf.Abs(horizontalmove));
    }
}

 

添加了倒数第3行的代码,这样就可以让我们的float变量获取角色移动的值了。

绥化地图:Unity引擎入门——制作第一个2D游戏(2)角色移动与动画 第6张

点击过渡箭头,作废退出时间,并添加一个条件,即为我们适才设置的谁人变量。当我们的float变量running小于0.1时,我们就从跑动状态回到站立状态。

要从站立状态进入跑步状态,只要点击另一个过渡箭头,把小于0.1改为大于0就好啦,请自己试着做做看吧!

绥化地图:Unity引擎入门——制作第一个2D游戏(2)角色移动与动画 第7张

完成了这些内容,我们的人物就能够跑动并具有动画效果了。下一节将会先容人物的跳跃和地面检测。若是以为这篇文章对你有辅助,请点赞关注吧

,

申博Sunbet

申博Sunbet-有你喜欢的sunbet真人、sunbet电子、sunbet棋牌、sunbet代理合作。

欧博app下载声明:该文看法仅代表作者自己,与本平台无关。转载请注明:绥化地图:Unity引擎入门——制作第一个2D游戏(2)角色移动与动画

网友评论

  • (*)

最新评论

站点信息

  • 文章总数:1453
  • 页面总数:0
  • 分类总数:8
  • 标签总数:2545
  • 评论总数:297
  • 浏览总数:33369