zoukankan      html  css  js  c++  java
  • 3D游戏中对象间常见的交互方式

          游戏中经常需要玩家与环境互动,比如开门动作、射击动作等。常用的互动方式有三种,碰撞检测、光线投射和碰撞检测触发器。以开门这个简单动作为例,

    • 碰撞检测(Collision detection)

    image

    当玩家与门的碰撞体发生物理碰撞时触发开门动画。若门的碰撞体与门一样大,这会导致玩家贴着门时门才会打开,感觉门是被撞开的。若门的碰撞体比门大,使得玩家与看不见的碰撞体发生物理碰撞,就像撞到了透明的箱子。

    • 光线投射(Ray casting)

    image

    在玩家面朝的方向绘制一个透明的投射线,当这个投射线与门交错时触发开门动画。但这样必须玩家面向门的时候门才会打开。

    • 碰撞检测触发器(Trigger collision detection)

    image

    在门外额外增加一个矩形碰撞体并设定为触发器,这样当玩家在门外触发(并非发生物理碰撞)到该碰撞体时触发开门动画。但这样还需要一个与门一样大的碰撞体来处理飞行物体等实际碰撞到门上的反弹效果。

    • 总结

    玩家对象(Character Controller)使用void OnControllerColliderHit(ControllerColliderHit hit)检测与其它物体的碰撞;在玩家对象的Update()中使用Physics.Raycast(transform.position, transform.forward, out hit, 3)来以玩家为起点、玩家朝向为方向投射一个3米长的线,线与任何碰撞体的碰撞结果存放在hit中;碰撞检测触发器使用void OnTriggerEnter(Collider col)来检测碰撞体的碰撞或交错。普通物体碰撞检测使用void OnCollisionEnter(Collision col)

    参考文献:Unity 3.x Game Development Essentials –> Chapter 5: Interactions

  • 相关阅读:
    植物大战僵尸课设个人报告
    MXNET框架基础2CVhotdog
    MXNET框架基础3GPU计算
    MXNET框架基础7BN
    MXNET框架基础0预备知识
    开课吧名企计算机视觉第一课
    MXNET框架基础5符号式编程
    MXNET框架基础1模型构建基本原理
    faceid算法原理简述
    MXNET框架基础6图像增广
  • 原文地址:https://www.cnblogs.com/codingmylife/p/2883182.html
Copyright © 2011-2022 走看看