Unity3D实现第一人称移动,随鼠标转动视角+上楼梯(C#)

这篇具有很好参考价值的文章主要介绍了Unity3D实现第一人称移动,随鼠标转动视角+上楼梯(C#)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Unity3D实现第一人称移动,随鼠标转动视角+上楼梯(C#)

第一人称移动:
1、在层级面板创建一个Capsule,命名为Player,将层级面板中的相机拖到Player下方
unity鼠标控制第一人称相机旋转,Unity3D游戏制作基础知识,c#,unity
2、重置Player和摄像机的Transform数值(方便调整摄像机在Player上的位置),然后调整摄像机在Player上的位置
unity鼠标控制第一人称相机旋转,Unity3D游戏制作基础知识,c#,unity
大概将摄像机放到Player眼睛的位置即可。
unity鼠标控制第一人称相机旋转,Unity3D游戏制作基础知识,c#,unity
3、创建一个脚本,命名为CameraControl。并挂载到摄像机上。
代码内容

public class CameraControl : MonoBehaviour
{
    public Transform player;//获取玩家
    private float mouseX,mouseY;//获取鼠标位置
    public float mouseSensitivity;//鼠标灵敏度
    private float xRotation;
    private void Update()
    {
        mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
        mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;
        xRotation -= mouseY;//在上下移动视角后,防止Y的值反弹回0(若不加这一条,每次上下移动视角移动一下后,视角都会弹回原位置,不会固定)
        xRotation = Mathf.Clamp(xRotation, -70f, 70f);//摄像机上下视角限制,对于Player(主角)来说,视角上下是有限制的,不然会很诡异
        player.Rotate(Vector3.up*mouseX);//玩家随鼠标旋转
        transform.localRotation=Quaternion.Euler(xRotation,0,0);//摄像机旋转
    }
}

4、将层级的Player拖到脚本中。
unity鼠标控制第一人称相机旋转,Unity3D游戏制作基础知识,c#,unity
效果:(图中红线是后面操作实现的,现在没有是正确的)
unity鼠标控制第一人称相机旋转,Unity3D游戏制作基础知识,c#,unity
5、对Player,删掉默认的Colider,添加Character Controller和Rigidbody
unity鼠标控制第一人称相机旋转,Unity3D游戏制作基础知识,c#,unity
6、调整ChararcterController中参数来让碰撞体将Player包住(主要调整半径和高度)
unity鼠标控制第一人称相机旋转,Unity3D游戏制作基础知识,c#,unity
7、创建一个脚本,命名为PlayerMove,挂载到Player上。
我写的是除了前后左右移动,当按下空格键,会加速

public class PlayerMove : MonoBehaviour
{

    // Start is called before the first frame update
    private float walk;
    private float run;
    private float speed;
    private Vector3 dir;
    private CharacterController playerController;
    void Start()
    {
        walk = 250.0f;
        run = 500.0f;
        playerController = GetComponent<CharacterController>();
    }
    void Update()
    {
        float vertical = Input.GetAxis("Vertical");
        float horizontal = Input.GetAxis("Horizontal");
        if (Input.GetKey(KeyCode.Space))
            speed = run;
        else
            speed = walk;
        dir = transform.forward * vertical + transform.right * horizontal;
        playerController.Move(dir*speed*Time.deltaTime);
    }
}

上楼梯(利用射线检测)
8、在PlayerMove中添加代码,完整代码为

public class PlayerMove : MonoBehaviour
{
    private float walk;
    private float run;
    private float speed;
    private Vector3 dir;
    private Vector3 dirY;
    private CharacterController playerController;

    private Vector3 rayOrigin;
    private Ray ray;
    void Start()
    {
        walk = 250.0f;
        run = 500.0f;
        playerController = GetComponent<CharacterController>();
    }
    void Update()
    {
        float vertical = Input.GetAxis("Vertical");
        float horizontal = Input.GetAxis("Horizontal");
        if (Input.GetKey(KeyCode.Space))
            speed = run;
        else
            speed = walk;
        dir = transform.forward * vertical + transform.right * horizontal;
        playerController.Move(dir*speed*Time.deltaTime);
        
        rayOrigin = new Vector3(this.transform.position.x, this.transform.position.y, this.transform.position.z) +
                    this.transform.forward * speed;

        ray.origin = rayOrigin;
        ray.direction = new Vector3(0, -1, 0);
        RaycastHit hit;
        if (Physics.Raycast(ray, out hit))
        {
            Debug.DrawLine(ray.origin,hit.point,Color.red);
        }
        dirY.y = -this.transform.position.y+ hit.point.y;
        playerController.Move(dirY);
    }

9、一定要将每个台阶加上碰撞体unity鼠标控制第一人称相机旋转,Unity3D游戏制作基础知识,c#,unity
最终运行效果:
unity鼠标控制第一人称相机旋转,Unity3D游戏制作基础知识,c#,unity文章来源地址https://www.toymoban.com/news/detail-539105.html

到了这里,关于Unity3D实现第一人称移动,随鼠标转动视角+上楼梯(C#)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • unity3D 鼠标滚轮实现物体的大小缩放

    鼠标滚轮响应函数是Input.GetAxis(\\\"Mouse ScrollWheel\\\"),函数返回值类型是float,向前滚是返回正数,向后滚是返回负数,且鼠标滚轮滑动单次函数返回值为0.1 利用返回值修改模型transform.localscale,实现模型缩放 鼠标滚轮一直向后滚,会看见模型逐渐变小,当变到很小到消失的时候,

    2024年02月08日
    浏览(81)
  • Unity3d用Animator实现鼠标控制多个门开关

    本人Unity3d小白,目前正在学习U3d,这个功能想用Animator实现,从Key帧到写脚本摸索了三天时间,走了不少弯路,搜了不少实例,有版本改版原因也有的是在Unity中搭建的小场景,不涉及父物体,总之开始做的功能没有实现。现在把我实现的方法记录下来,算是对个功能的总结

    2024年02月13日
    浏览(67)
  • Unity3D实现鼠标悬浮UI或物体上显示文字信息

    Unity工具 大家好,我是心疼你的一切,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 本篇文章实现一个鼠标悬浮在ui或者物体上显示文字的功能 unity鼠标悬浮ui显示文字 鼠标进入UI执行的 鼠标离开UI执行的 鼠标在ui里滑动执行的 1. 2. 搭建比较简单,各位顺便搭建吧。

    2024年02月04日
    浏览(95)
  • unity3d 实现第三人称移动与摄像机调整

    首先展示效果 unity3d 关于人物移动,这里推荐使用Character Conrroller组件,优点就是可以不用处理刚体,不受重力的影响,自带物理碰撞检测。  人物移动代码包括转向 接下来就是摄影机的调整,这里使用unity自带的插件cinemachine,非常的推荐,无需使用冗杂的代码即可设计较好

    2024年02月11日
    浏览(50)
  • Unity3D学习记录04——利用射线实现角色类似LOL的移动

    首先新建一个空白的GameObject,挂在一个MouseManager的脚本 实现思路: 通过获取鼠标点击的位置,获得该位置的信息,然后使角色移动到该位置 MouseManager脚本的代码如下:   代码解释: 先创建了一个Action类型的事件OnMouseClicked 这个是C#中事件的内容,我们可以在满足条件的时

    2024年02月08日
    浏览(56)
  • unity3D 鼠标键盘输入

    一、鼠标键盘输入 游戏的输入可以来自于鼠标,键盘,触摸屏,游戏手柄 显示一个Vector3类型的xyz的鼠标位置。 Input.GetButtonDown(0):0代表鼠标左键,1代表鼠标右键,如果鼠标左键按下返回true。 Input.GetKeyDown(\\\"space\\\"): 检测空格是否按下。 更多操作可以查看Unity Script API( UnityE

    2024年02月10日
    浏览(81)
  • unity3d---移动、缩放、旋转

    目录 1.示意图 2.触屏移动与缩放+键盘移动、旋转与缩放+鼠标移动旋转与缩放 1.示意图   2.触屏移动与缩放+键盘移动、旋转与缩放+鼠标移动旋转与缩放

    2024年02月06日
    浏览(62)
  • Unity3D 控制物体移动且自动旋转

    直接上代码(改脚本挂载到游戏物体上) 第三人称摄像机移动

    2024年02月15日
    浏览(83)
  • Unity3D方向键控制人物移动的代码

    也可以换成 Translate 函数默认模式是 Space.Self ,此时移动方向需要为人物坐标系下的人物前进方向 Vector3(0, 0, 1) ;如果模式指定为 Space.World ,移动方向应该为世界坐标系下的人物前进方向 transform.forward , transform.forward 在人物转向过程中会改变。如果不注意这个问题,人物转

    2024年02月11日
    浏览(63)
  • Unity3D Button 鼠标悬浮进入与鼠标悬浮退出按钮事件

    由于甲方验收未通过,项目需要改版,在修改界面时,想实现鼠标在一级菜单悬浮即可显示二级菜单的功能,主要如下图 注意,上图鼠标只是悬浮在场景漫游按钮上,并未点击左键或右键等 思路是让类继承IPointerEnterHandler IPointerExitHandler两个接口,然后实现其中的方法 代码如

    2024年02月16日
    浏览(50)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包