近期热门
粉丝2
关注 0
获赞 0
第一人称摄像机控制

[U3D] 第一人称摄像机控制

[复制链接]
22917 4 0 0 11年前 举报
顾名思义,第一人称就是摄像机的主人是自己,可以看到别人,但是看不到自己。而我们经常玩的游戏可以看到自己,也可以看到别人,和地图上的物件,是以观众的角度来看,称之为第三人称摄像机

选中Hierarchy面板的摄像机对象,为摄像机增加角色控制

0.jpg

对角色进行适当的设置

1.jpg


Slope Limit : 最大爬坡角度
Step offset : 移动距离主意单位为米

u3d里面的所有单位都为米,比如坐标的位置,旋转的角度等

Skin width : 皮肤宽,据说设置这个穿越树林的时候能碰撞树枝摇摆,具体怎么样我还不知道

增加控制脚本

先打开Project面板,创建一个C# 代码文件,回到Hierarchy面板,选中MainCamera

选中菜单->Component -> scripts - >你刚才建立的脚本文件


2.jpg

用外部编辑器打开这个脚本文件,可以用mono或者visual studio 打开,什么意思呢,就是说u3d的项目文件可以用mono和vs打开

在Update方法里面粘贴下面的代码


    // Update is called once per frame
    void Update()
    {
        float speed = 3.0f;
        float rotateSpeed = 3.0f;

        //获取人称控制器组件
        CharacterController controller = (CharacterController)base.GetComponent(typeof(CharacterController));
        //水平方向旋转摄像头(方向键← → 或者 w s 键) , 玩游戏的人都知道
        transform.Rotate(0, Input.GetAxis("Horizontal") * rotateSpeed, 0);
        // 翻译当前坐标到世界坐标方向,就是说现在人物的前后左右到底在那个轴上面
        // Vector3.forward 前
        // Vector3.back 后
        // Vector3.down 下
        Vector3 forward = transform.TransformDirection(Vector3.forward);
        // 获取当前垂直方向的输入(方向键↑↓ 或者 a d 键),玩游戏的人都知道
        float curSpeed = speed * Input.GetAxis("Vertical");
        // 移动,因为刚才翻译坐标的时候其他几个轴都设置成了0,所以只有有数值的那根轴会发生变化
        controller.SimpleMove(forward * curSpeed);

    }








0
点赞
0
打赏
0
添加到收藏夹

0

点击复制链接

使用微信扫码分享
一次扣10个券
全部评论4
您需要登录后才可以回帖 登录

为啥不能用??
7年前
回复

使用道具 举报

求指导 怎么更改
9年前
回复

使用道具 举报

回复回复回复
11年前
回复

使用道具 举报

我记得4.0有自带的一个脚本可以实现
11年前
回复

使用道具 举报

您当前使用的浏览器IE内核版本过低会导致网站显示错误

请使用高速内核浏览器或其他浏览器