unity模型实现鼠标点击引导运动

一,鼠标引导模型运动:

在模型的Inspector面板上,点击Add Component,添加导航组件Nav Mesh Agent组件:

设置Radius和Height两个参数,画出物体大概范围:

 

 Project面板上创建脚本MouseClick,并拖到斑马模型的Inspector面板上:

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

public class MouseClick : MonoBehaviour {


    public NavMeshAgent agent;//得到模型的NavMeshAgent
    public Animator anim;


    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//把鼠标坐标转化为射线
            RaycastHit hit;//碰撞信息
            if (Physics.Raycast(ray, out hit))//如果发生碰撞
            {
                agent.SetDestination(hit.point);//将鼠标点击位置,设置为agent的位置,也就是模型的位置
            }
        }

        anim.SetFloat("speed", agent.velocity.magnitude);
    }
}

将Nav Mesh Agent拖拽到Mouse Click脚本的Agent处:

Nav Mesh Agent的Angular Speed设置大一点,可以让物体移动更加灵活: 

二,控制视野——摄像机跟随:

调整模型和摄像机的位置,在游戏Game画面上,显示合适的视野。 

创建脚本,并托给摄像机:

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

public class FollowTarget : MonoBehaviour {

    public Transform hero; //跟随目标
    private Vector3 offset; //位置偏移量
	// Use this for initialization
	void Start () {
        offset = transform.position - hero.position;//设定的偏移量=当前位置-模型位置
	}
	
	// Update is called once per frame
	void Update () {
        transform.position = offset + hero.position;//设定的偏移量+模型位置
	}
}

将模型,拖拽到脚本这里:

三,让模型动起来:

在Project面板上,创建动画状态机Animator Controller,命名为BMController.

 选中斑马模型,在Inspector面板上,将刚刚创建的BMController,拖过去:

选中斑马模型,从window菜单栏找到Animator,并将需要的动画拖动到上面。

右击动画选中Make Transition,来建立联系:

 我们通过速度来进行切换,从静止到慢走到快跑

创建speed:

选中两个动画中的一条线: 

 

在Inspector面板上:

1:

表示速度大于0时,切换到Trot,慢走动画。

2:

 

 

3:

 

4:

 

 

选中斑马模型,在Inspector面板上,将Animator拖到 如图所示位置:

 

运行试试! 

原创文章 119 获赞 61 访问量 4万+

猜你喜欢

转载自blog.csdn.net/Ciel_Y/article/details/105831450