• [unity3d][通过代码]让模型移动,动态改变模型位置,点对点移动


    阅读建议

    阅读时长: 10分钟
    阅读难度: 初级
    阅读收获: 可以在unity自由的完成点对点的移动过程
    例子地址: https://gitee.com/asiworld/unity3d-basic-function-code


    方式1:[通过直接赋值的方式进行进行模型移动]

    原理

    • 直接修改gameobjectposition内容,当然物体实际存在的有localposition和worldposition,具体要使用哪个要看需求是怎么样的

    步骤

    1. 在hierarchy视图中创建物体(本例子中使用cube)
    2. 创建控制脚本并进行代码编写
    using System.Collections;
    using UnityEngine;
    
    public class movement_1 : MonoBehaviour
    {
        // Start is called before the first frame update
        IEnumerator Start()
        {
            yield return new WaitForSeconds(1.0f);
            transform.position = new Vector3(transform.position.x + 10, transform.position.y, transform.position.z);
        }
    
        // Update is called once per frame
        void Update()
        {
    
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    1. 把脚本挂在到物体上
    2. 点击play查看效果

    效果展示

    9月9日1


    方式2:[通过在updata中赋值,平滑的让物体移动]

    原理

    • 由第一种方式的从一个点到另一个点的直接移动,我们在updata中对整个过程进行拆分,让整个过程更加平滑

    步骤

    1. 在hierarchy视图中创建物体(本例子中使用cube)
    2. 创建控制脚本并进行代码编写
    using UnityEngine;
    
    public class movement_2 : MonoBehaviour
    {
        // Start is called before the first frame update
        void Start()
        {
    
        }
    
        // Update is called once per frame
        void Update()
        {
            transform.position = Vector3.Lerp(transform.position, new Vector3(5, transform.position.y, transform.position.z), Time.deltaTime);
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    1. 把脚本挂在到物体上
    2. 点击play查看效果

    效果展示

    9月9日2


    方式3:[通过dotween让物体平滑的移动]

    原理

    • 使用比较U3D比较常用的动画插件让我们在很简单的代码下就可以让物体进行移动

    步骤

    1. 引入dotween并配置完成
    2. 在hierarchy视图中创建物体(本例子中使用cube)
    3. 创建控制脚本并进行代码编写
    using DG.Tweening;
    using UnityEngine;
    
    public class movement_3 : MonoBehaviour
    {
        // Start is called before the first frame update
        void Start()
        {
            transform.DOMove(new Vector3(transform.position.x + 10, transform.position.y, transform.position.z), 2.0f);
        }
    
        // Update is called once per frame
        void Update()
        {
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    1. 挂在脚本在物体上
    2. 点击play按钮

    效果展示

    9月9日3


    方式4:[通过animator让物体平滑的移动]

    原理

    • 使用unity3d中自带的帧动画控制器,在帧动画文件中录入起始位置和终止位置

    步骤

    1. 在project视图中的对应目录下创建animator

    2. 在project视图中的对应目录下创建animation

    3. Hierarchy视图中创建物体

    4. 关联animation和animator

    5. 关联animator和物体

    6. 点击ctrl/command+6打开animation视图
      在这里插入图片描述

    7. 在第n针上创建关键帧内容为对应物体的位置

    8. 点击play按键

    效果展示

    9月9日4


    总结

    😘求求老爷给个一键三连吧

  • 相关阅读:
    不止于“算”,开放计算加速技术落地和行业赋能
    docker镜像学习
    六大核心原则,引领自动化正确实施
    基于Vue+node的图书馆座位预约选座管理系统
    XCTF1-web disabled_button weak_auth view_source cookie backup
    云服务器的快照功能是什么?
    VMware与CentOS8-stream的配置教程【2022-9-5】
    《python 可视化之 matplotlib》第一章 折线图 plot
    解决:第一次用python的pip报错
    Linux扩展swap分区
  • 原文地址:https://blog.csdn.net/JianShengShuaiest/article/details/126756556