zoukankan      html  css  js  c++  java
  • U3D学习09-物体简单控制及视角观察

    一、Character Control非刚体
    1、场景初始化,注意调整CC的轴心,不需要碰撞,且删除CC子物体的碰撞。
    2、移动:
           获取X,Z轴变化,定义变量h,v;
           定义移动的速度speed;
           定义跳跃的高度highjump;
           因为非刚体,所以需要自定义重力,gravity,通常大于highjump;
           定义CC的实体对象用于获取物体的CC组件;
           定义移动的三维向量moveDirection;
           定义用于落地判定的三维向量colextents;
    3、视角观察与摄像机旋转:
           定义摄像机实体对象,用于获取摄像机物体;
           定义旋转速率:rspeed;
    4、事件响应:
         移动和跳跃都是物理行为,在FixedUpdate事件中实现动作
         h,v获取键盘水平和垂直输入——判断是否着地(射线方法或者cc自带)——获取移动向量——判断是否在移动,是否在跳跃(水平或者垂直变量不为0,空格键输入)——三维移动向量乘以速度,三维向量的Y轴赋值highjump;
         调用CC的move方法,参数是三维移动向量乘帧速率(获得每秒移动速度)。
    5、Unity的CC落地bug,
        使用自定义重力赋值三维向量的Y轴:moveDirect.y -= gravity * Time.deltaTime;
    6、射线判断落地:
            Ray ray = new Ray(this.transform.position + Vector3.up * 2 * colExtents.x, Vector3.down);
            return Physics.SphereCast(ray, colExtents.x, colExtents.x + 0.2f);   
    7、鼠标控制旋转是二维的
    如何确定鼠标控制物体旋转的坐标系,可以参考unity Scene场景中鼠标右键移动,观察坐标系移动。
    为什么transform.collider没有bounds?collision.collider有bounds属性?
    8、旋转后,物体的前方与移动方向同步
    Vector3 forward = transform.TransformDirection(Vector3.forward)
    世界坐标系与自身坐标系的转换。
  • 相关阅读:
    SQL server 和Oracle 序列
    AD 域服务简介(一)- 基于 LDAP 的 AD 域服务器搭建及其使用(转)
    Windows Server 2008 R2 搭建DNS服务器(转)
    windows7下搭建HTTP服务器
    解决vcenter 6.0 vcsa安装插件时报错的问题
    Windows server 2008R2系统登录密码破解
    vmware Horizon 7 与远程桌面(mstsc)兼容性问题解决办法
    VCSA服务重启命令
    如何哄女朋友开心(转)
    快速搭建一个本地的FTP服务器 win10及win7
  • 原文地址:https://www.cnblogs.com/joxin/p/9836188.html
Copyright © 2011-2022 走看看