打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Unity中角色在固定的位置移动的经典代码

using UnityEngine; 

using System.Collections; 



public class heroControl : MonoBehaviour { 



    //定义主角角色控制器 


    CharacterController hero; 


   


    //点数组 


    public Transform[] points; 


   


    //下一个点的下标,主角移动速度 


    public int nextIndex; 

    public int moveSpeed = 10; 


   


    void Start() 


    { 


        //初始化主角移动速度 


        nextIndex = 0; 


        //获得主角的角色控制器组件 


        hero = GetComponent<CharacterController>(); 


    } 


    void Update() 


    { 

        //如果主角距离点的距离大于0.2,则算出主角的朝向,移动主角人物 


        if (Vector3.Distance(ignoreY(points[nextIndex % points.Length].position), ignoreY(transform.position)) > 0.2f) 


        { 

           //主角的朝向即为下一个点坐标减去主角坐标的向量 

            Vector3 direction = (ignoreY(points[nextIndex % points.Length].position) - ignoreY(transform.position)).normalized; 


            //插值改变主角的朝向,使其有一个自然转向的过程,防止其瞬间转向 


            hero.transform.forward = Vector3.Lerp(transform.forward, direction, 0.1f); 


            //移动主角 


            hero.SimpleMove(transform.forward * moveSpeed); 


        } 


        else 

        { 


            //如果到达点,则使下一点作为目标点 


            nextIndex++; 

       } 

    } 


    //这个函数用来取消向量的Y轴影响,比如主角的高度与点之间可能有一段距离,我们要忽略这段距离 


    Vector3 ignoreY(Vector3 v3) 


    { 

        return new Vector3(v3.x, 0, v3.z); 


    } 

}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【新提醒】【【AchorU3d学习笔记③】如何实现角色移动及相机平滑跟随】
Unity教程之
如何读取刚体的移动速度?
7.3 观察模型
Unity3D 控制物体移动、旋转、缩放
Unity3D研究院之脚本实现模型的平移与旋转(六) | 雨松MOMO程序研究院
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服