unity如何创建一个角色(实现角色的行走、奔跑)

1、首先从资源商店下载导入一个模型,这里选择的是下面这个模型(用了很多,这个比较好用,还是免费的),下载后导入模型。 

2、创建一个平面,打开刚才导入的模型的预制体,把角色拖到场景中并命名为Player,打开的文件目录如下

 3、创建一个角色控制器(右键->Create->Animator Controller),命名为boy(可随意命名),打开角色控制器,打开各状态的预制体,打开目录如下

把需要的状态拖到角色控制器中合适的位置,这里以角色的走和跑为例,首先初始状态为idel,所以先把idel拖入到角色控制器中(这个顺序很重要),接着把run和walk拖进去,然后点击idel,右键选择Make transition,点击run,以下同理,创建结果如下所示

 

4、创建两个布尔变量来控制角色什么时候走,什么时候跑,点击左上角的Parameters,点击加号,选择bool,创建两个变量如下图所示

5、点击从idel指向run的箭头,在右边设置参数如下,Has Exit Time一定要把√去掉,否则会有延时,其余参数的设置也是一样的。

 6,设置完所有参数后,选择场景中的Player,把刚才的角色控制器拖到Animator中controller中,并给角色添加刚体组件

7、编写脚本CharacterController,并把它赋给角色,代码如下

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

public class charactercontroller : MonoBehaviour
{
    private charactercontroller _character;
    private Animator _animator;
    private int speed = 2;
    // Start is called before the first frame update
    void Start()
    {
        _character = GetComponent<charactercontroller>();
        _animator = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        speed = 2;
        _animator.SetBool("iswalk", true);
        _animator.SetBool("isrun", false);
        float ho = Input.GetAxis("Horizontal");
        float ve = Input.GetAxis("Vertical");
        Vector3 dir = new Vector3(ho, 0, ve);
        if (dir != Vector3.zero)
        {
            //让人物面向方向
            transform.rotation = Quaternion.LookRotation(dir);
            //让人物朝前方移动
            setstate();
            transform.Translate(Vector3.forward * speed * Time.deltaTime);
        }
        else
        {
            _animator.SetBool("iswalk", false);
            _animator.SetBool("isrun", false);
        }

    }

    void setstate()
    {
        if (Input.GetKey(KeyCode.H))//跑
        {
            speed = 10;
            _animator.SetBool("iswalk", false);
            _animator.SetBool("isrun", true);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/lxy20011125/article/details/129367114