Unity_相机灵活跟随角色移动

这篇具有很好参考价值的文章主要介绍了Unity_相机灵活跟随角色移动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

每日一句:慢慢改变,慢慢成长,慢慢适应,慢慢优秀

目录

角色旋转、移动类

相机跟随人物移动类


角色旋转、移动类

/*旋转刚体,位移的动画驱动移动*/

Unity_相机灵活跟随角色移动,UNITY基础,unity,游戏引擎

using System.Collections;

using System.Collections.Generic;

using UnityEngine;



public class PlayerMoement : MonoBehaviour

{

   

    public float turnSmooting = 15f;

    public float speedDampTime = 0.1f;

    private Animator animator;

  

    void Start()

    {

        animator = GetComponent<Animator>();

     

    }

   

    //不受帧率影响,有物理计算的时候使用,不会因为帧率影响卡帧

    private void FixedUpdate()

    {

        float h = Input.GetAxis("Horizontal");

        float v = Input.GetAxis("Vertical");

        MovementManagement(h, v);

    }

    //旋转方法,参考绝对坐标系

    void Ratating(float h, float v)//(横轴的值,纵轴的值)

    {

        //按下横轴和纵轴的键,前左、前右,后左、后右,向量,player朝向的目标向量

        Vector3 targetDir = new Vector3(h, 0, v);

        Quaternion targetRotation = Quaternion.LookRotation(targetDir);//绝对的旋转量,旋转刚体,位移的动画驱动移动

        Rigidbody rb = GetComponent<Rigidbody>();

        Quaternion newRotation = Quaternion.Lerp(rb.rotation, targetRotation, turnSmooting * Time.deltaTime);

        4(newRotation);



    }

    void MovementManagement(float h, float v)

    {      

        if (h != 0 || v != 0)//如果按先后左右键了

        {

            Ratating(h, v);

            animator.SetBool("Walk", true);//插值

        }

        else

        {

            animator.SetBool("Walk", false);

        }

    }

}

相机跟随人物移动类

Unity_相机灵活跟随角色移动,UNITY基础,unity,游戏引擎文章来源地址https://www.toymoban.com/news/detail-713854.html

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class CameraMovement : MonoBehaviour

{

    //用插值方法移动

    float smooth = 1.5f;

    Transform player;

    Vector3 playerToCamera;

    float playerToCameraMag;

    Vector3 newPos;    //计算的结果

    // Start is called before the first frame update

    void Start()

    {

        player = GameObject.FindWithTag(Tags.Player).transform;

        playerToCamera = transform.position - player.position;//a-b等到b指向a的向量

        playerToCameraMag = playerToCamera.magnitude;//计算它的模

    }

    //射线检测,看击中的是不是player

    bool ViewingPositionCheck(Vector3 checkPos)

    {

        RaycastHit hit;

        if (Physics.Raycast(checkPos, player.position - checkPos, out hit, playerToCameraMag))//检测点到plyer的方向

        {

            if(hit.transform!=player)

            {

                return false;

            }

        }

        newPos = checkPos;

        return true;

    }

    void SmoothLookAt()

    {

        Vector3 camDirction = player.position - transform.position;//摄像机指向player的向量

        Quaternion lookAtRotation = Quaternion.LookRotation(camDirction);

        //将方向转化为旋转角度:

        //传入一个方向将返回一个旋转角,当某个物体被施加这个旋转角后,这个物体的forward方向将指向传入的方向。

        transform.rotation = Quaternion.Lerp(transform.rotation, lookAtRotation, smooth * Time.deltaTime);

    }

    private void FixedUpdate()

    {

        Vector3 standardPos = player.position + playerToCamera;

        Vector3 abovePos = player.position + Vector3.up * playerToCameraMag;//0,1,0上方高度

        Vector3[] checkPoints = new Vector3[5];

        checkPoints[0] = standardPos;

        checkPoints[1] = Vector3.Lerp(standardPos, abovePos, 0.25f);

        checkPoints[2]= Vector3.Lerp(standardPos, abovePos, 0.5f);

        checkPoints[3]= Vector3.Lerp(standardPos, abovePos, 0.75f);

        checkPoints[4] = abovePos; 

        for(int i=0;i<checkPoints.Length;i++)

        {

            if(ViewingPositionCheck(checkPoints[i]))

            {

                break;//每次传过来0到4 的点,之后进行射线检测,break 出来,找到了一个合适的点,newPos里

            }

        }

        transform.position = Vector3.Lerp(transform.position, newPos, smooth * Time.deltaTime);

        SmoothLookAt();

    }

}

到了这里,关于Unity_相机灵活跟随角色移动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • unity相机跟随和相机边界(Cinemachine)

    1.在 Unity 编辑器中打开 Package Manager(菜单:Window Package Manager) 2.找到 Cinemachine 条目,然后单击右下角的 Install。 1.要开始使用 Cinemachine,你需要在顶部菜单栏上选择 Cinemachine Create 2D Camera 条目,从而将 Cinemachine 2D 摄像机添加到场景中。 2.此时将创建一个名为 CM vcam1 的新游戏

    2024年02月11日
    浏览(41)
  • unity 3D,镜头跟随鼠标移动

    一、鼠标隐藏,使用UI图片作鼠标图 二、射线在屏幕中央,用于交互 三、鼠标与摄像头跟随

    2024年02月12日
    浏览(47)
  • 【Unity】实现相机跟随及视角转动

    【unity】实现相机跟随,人物移动请参照【Unity】 实现角色移动、视角旋转以及跳跃 1.创建一个 Camera ,将 Camera 置于物体 Player 下 随意拖动 Camera 到合适的位置 具体参数【仅供参考】 运行效果如下 1.创建两个空物体 CameraHandle 和 Pivot ,将相机拖动到Pivot下,具体如图所示 其中

    2023年04月27日
    浏览(34)
  • unity UI 跟随3D物体移动

     

    2024年02月11日
    浏览(44)
  • 【Unity-Cinemachine相机】相机跟随之Transposer属性

    上面的偏移量就是Follow Offset Binding Mode决定Follow Offset是目标本地坐标系下的身后十米还是世界坐标系下的身后十米 Lock To Target On Assign:锁定自己和目标本地坐标系的距离,朝向和目标本地坐标系方向相同 World Space:此时的坐标指的是世界坐标系下的坐标而不是Follow目标本地坐

    2024年02月09日
    浏览(36)
  • Unity如何实现第三人称相机跟随

    我们需要实现 简易 的, 泛用性高 的第三人称相机跟随,通过鼠标滚轮可以控制与对象物体的远近距离,按住鼠标右键拖动鼠标可以控制相机视角跟随物体旋转,并且相机始终朝向游戏对象。 1.在层级区域把主相机拖入玩家物体作为玩家的子层级,并且调整好适当的距离。

    2024年02月11日
    浏览(47)
  • unity--相机跟随与屏幕自适应的实现

    如何让相机跟着人物跑呢?这是个不太大但是需要解决的问题。 思路就是用LateUpade(保证在所有更新函数都调用完调用)实时监测相机的位置,让他一直和游戏主角保持一定的距离。 开始执行: 创建个脚本给相机绑上 然后我们开始写里面的代码。 写代码 把参数设置下 完成

    2024年02月15日
    浏览(31)
  • Unity实现2D游戏跟随摄像机(平滑移动)

    摄像机运行效果如下所示。 首先创建一个可用的玩家角色,写好移动逻辑,如果要使用在Unity商店中购买的资源,可以点击Window菜单栏 Package Manager选项,来打开Package Manager窗口,如下所示,然后下载你需要的资源。 如果你没有在资源商店的精灵资产,可以在Hierarchy视图,右

    2024年02月19日
    浏览(38)
  • 【Unity游戏开发教程】零基础带你从小白到超神16——四种方法控制人物移动之角色控制器

    直接修改组件位置 去资源商城下载角色控制系统成品直接拿来用 unity提供的角色控制器组件 通过物理系统自己做

    2024年02月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包