找回密码
 立即注册
楼主: WNL

[脚本] 宠物跟随

[复制链接]
发表于 2015-3-12 09:26 | 显示全部楼层 |阅读模式
     //定义一个变量来引用要跟随的对象
    public Transform TargetObj = null;

    //定义一个对象引用角色的animator组件
    protected Animator animator;

    //定义一个角色控制器变量引用角色控制器
    protected CharacterController controller;

    //定义一个时间变量,主要用在使用Animator组件设置浮点函数
    private float SpeedDempTime = 0.25f;
    private float DirectionDempTime = 0.25f;

    void Start()
    {
        //对前面定义的两个组件类型的变量animator和controller进行初始化
        animator = GetComponent<Animator>();
        controller = GetComponent<CharacterController>();
        if (animator) //当组件存在时
        {
            //对animator组件中的一个属性animator 和 speed 进行随机化设置
            //animator 和speed 的作用就是控制animator动画的播放
            animator.speed = 1 + Random.Range(-0.4f, 0.4f);
        }
    }

    // Update is called once per frame
    void Update()
    {//控制角色跟随的主要逻辑
        if (animator && TargetObj)
        {
            //是跟随者跟随的目标一起运动,同时两者之间保持一定的距离之内
            if (Vector3.Distance(TargetObj.position, animator.rootPosition) > 3)//是一个物体跟随另一个物体, 判断两个物体之间保持在硬顶的距离之内
            {
                animator.SetFloat("Speed", 1, SpeedDempTime, Time.deltaTime);
                //定义俩个矢量
                Vector3 curentDir = animator.rootRotation * Vector3.forward; // 定义角色的正方向 也就是角色的前方
                //通过计算判断两者之间的位置关系
                Vector3 wanterDir = (TargetObj.position - animator.rootPosition).normalized;

                //if else语句:判断物体和当前物体之间的位置关系,主要用到了点积和差积的矢量的操作     来进行方向的判断
                if (Vector3.Dot(curentDir, wanterDir) > 0)//当物体大于0 也就是物体的前方   
                {
                    //通过差积来判断左右
                    animator.SetFloat("Direction", Vector3.Cross(curentDir, wanterDir).y, DirectionDempTime, Time.deltaTime);
                }
                else
                {
                    animator.SetFloat("Direction", Vector3.Cross(curentDir, wanterDir).y > 0 ? 1 : -1, DirectionDempTime, Time.deltaTime);
                }
            }
            else
            {
                animator.SetFloat("Speed", 0, SpeedDempTime, Time.deltaTime);
            }
        }

    }




联系电话    13552230323    QQ      3164087565
发表于 2015-9-17 17:29 | 显示全部楼层

也不能一竿子打死呀!{:soso__11174995096617402082_3:}
发表于 2017-2-13 12:24 | 显示全部楼层
很不错
发表于 2017-2-13 13:02 | 显示全部楼层
楼主是超人
发表于 2017-2-13 12:44 | 显示全部楼层
顶顶多好
发表于 2017-2-13 12:18 | 显示全部楼层
真心顶
发表于 2017-2-13 12:19 | 显示全部楼层
难得一见的好帖
发表于 2017-6-17 19:55 | 显示全部楼层
楼主是超人
发表于 2017-6-17 20:12 | 显示全部楼层
顶顶多好
发表于 2017-6-17 19:35 | 显示全部楼层
真心顶
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-12-23 20:34 , Processed in 0.195099 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表