Unity3D 创建一个人物,实现人物的移动

1,创建项目

首先打开我们的Unity Hub

在我们的编译器下面新建项目,选择3D模板,更改一下我们的项目名称,选择一下路径,然后点击创建项目

等待项目创建。。。。。。

我们在项目里先创建一个plane,这样有点视觉体验

点击Wnidows --> Asset Store。搜索:Character Pack: Free Sample

点击添加至我的资源,在Unity中打开

回到我们的Unity就会弹出一个模态框,点击import

(因为我之前就已经下载过这个,你们应该会有一个DownLoad,点击下载即可,如果下载出现问题就重新再下载一遍就好了) 

点击import

我们就可以看到我们Assets里面就出现我们下载的包

跟随我的目录找到人物模型

我们将人物拖拽到Scene界面即可

开始添加人物动画

在Assets界面右键鼠标,选择Create,选择Animation,更改一下名字为Move

将创建好的动画控制器Animation,添加到我们人物上面

点击状态机界面,就会有我们刚才创建的了

在Assets界面右键鼠标,选择Create,选择C# Script,我们将这个代码名字命名为Move

点击刚刚创建好的人物,把我们创建好的C#代码拖拽进去

跟随我的目录,找到资源动画

这个Idle就是人物待机动画,这个Run就是我们人物跑起来时的动画

我们将Idle 和 Run拖拽到我们的状态机里面,把我们刚才的Move删除,右键 idle,选择Make Transition,连接到我们的run,同理右键run,连接到idle

选择一下我们要配置的参数,选择bool类型,更改一下名字为isRun

点击我们idle到run的小箭头,改成我这个样子(从idle到run是true)

同理点击run到idle的箭头,更改一下属性(从run到idle是false)

点击动画控制器,将控制器拖拽到Controller上面

双击我们创建好的C#代码,将这串代码复制上去。

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

public class CharacterControl : MonoBehaviour
{
    private CharacterControl _character;
    private Animator animator;
    // Start is called before the first frame update
    void Start()
    {
        _character = GetComponent<CharacterControl>();
        animator = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        float horizontal = Input.GetAxis("Horizontal");

        float vertical = Input.GetAxis("Vertical");

        Vector3 dir = new Vector3(horizontal, 0, vertical);

        if (dir != Vector3.zero)
        {
            transform.rotation = Quaternion.LookRotation(dir);

            animator.SetBool("isRun", true);

            transform.Translate(Vector3.forward * 2 * Time.deltaTime);
        }
        else
        {
            animator.SetBool("isRun", false);
        }


    }
}

运行!

猜你喜欢

转载自blog.csdn.net/m0_74995879/article/details/142638929