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)
    世界坐标系与自身坐标系的转换。
  • 相关阅读:
    数据结构-王道2017-绪论-1.2 算法和算法评价
    数据结构-王道2017-绪论-1.1 数据结构的基本概念
    挑战程序设计竞赛-2.1最基础的“穷竭搜索”-宽度优先搜索-迷宫的最短路径
    挑战程序设计竞赛-2.1最基础的“穷竭搜索”-Lake Counting
    挑战程序设计竞赛-1.6节-三角形
    C++注意事项
    Software Project Management -- HW1
    Software Testing -- HW2
    Software Testing -- HW1
    c语言与c++基础知识
  • 原文地址:https://www.cnblogs.com/joxin/p/9836188.html
Copyright © 2011-2022 走看看