首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当游戏对象转动时,当我把一个对象放在上面的时候。该对象没有像它应该的那样旋转,如何解决这个问题?

当游戏对象转动时,如果放置在其上的对象没有按照预期旋转,可能是由于以下几个原因导致的:

  1. 锚点位置不正确:游戏对象的锚点决定了其旋转的中心点。如果放置在其上的对象没有正确旋转,可能是因为锚点位置不正确。可以通过调整锚点位置来解决这个问题。
  2. 刚体组件设置不正确:如果放置在游戏对象上的对象具有刚体组件,可能是刚体的约束设置不正确导致的。可以检查刚体组件的约束属性,确保其允许旋转。
  3. 物理材质设置不正确:如果放置在游戏对象上的对象具有物理材质,可能是物理材质的摩擦力或弹性系数设置不正确导致的。可以调整物理材质的属性,以使其更适合旋转。
  4. 碰撞体设置不正确:如果放置在游戏对象上的对象具有碰撞体组件,可能是碰撞体的形状或大小设置不正确导致的。可以调整碰撞体的属性,以确保其与游戏对象的旋转兼容。
  5. 脚本逻辑错误:如果放置在游戏对象上的对象受到脚本控制,可能是脚本中的逻辑错误导致的。可以检查脚本代码,确保旋转逻辑正确实现。

针对这个问题,腾讯云提供了一系列的云计算产品和服务,可以帮助开发者解决游戏开发中的各种问题。例如:

  1. 云服务器(CVM):提供稳定可靠的虚拟服务器,可用于游戏服务器的搭建和运行。
  2. 云数据库 MySQL版(CDB):提供高性能、可扩展的数据库服务,可用于游戏数据的存储和管理。
  3. 云存储(COS):提供安全可靠的对象存储服务,可用于游戏资源的存储和分发。
  4. 人工智能服务(AI):提供丰富的人工智能能力,如图像识别、语音识别等,可用于游戏中的智能化功能实现。
  5. 物联网(IoT):提供物联网平台和设备接入服务,可用于游戏中的物联网设备管理和控制。

以上是腾讯云提供的一些相关产品和服务,更多详细信息和产品介绍可以参考腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么在VR中投掷体验很差——怎样改善它

这里,我试图把苏打瓶子投到我面前的空白板上。 有些投掷偏离的离谱。有的太低。其中一两个影响到NPC了。或许,我们的虚拟现实第一节,它其实很难精准的投出。当我有这样的体验,我认为是因为自己不擅长VR。...当你拾起一个虚拟的物体,物体的质心和质心在手上的感觉有些分离。你的肌肉感觉很怪异。 当你要投掷的时候,若只是在这个或某个方向挥手,这种分离感觉没有太大关系。...若投掷时候,弯曲手臂,旋转手腕(好的投掷的关键——“那就是手腕”(手腕发力(译者注)))。当旋转你真正的手腕时候,最后加到虚拟对象上的过大的动量,就像你用一个勺子甩出去一样。...三英寸和十二英寸的差异意味着手腕轻轻的抖动就可以将一个对象扔过一个房间或者很难推动它。 手腕像弹射器一样运动 ▼ 在Rescuties游戏中,你在追逐快速移动的婴儿——想快速把他们送到安全区域。...若你对这些测试比较好奇,可以在Rescuties中有个“实验室”菜单,在其中切换投放模式打开或关闭,切换速度是如何被测量的,以及控制多少帧在回归或平滑中被消耗掉。 这个问题没有解决。

1K10

Unity基础系列(一)——创建一个时钟(GameObjects与Scripts)

(clock选中的时候,Inspector上的信息) Transform 组件上包含了一个游戏对象在3D空间里的位置、旋转和缩放。...这里我们把clock的position和rotation 设置为0,scale 设置为1。 小提问:如果是一个2D的游戏对象应该怎么办?...我们把它的名字改为 Hour Indicator。 ? (12小时制的时钟,小时指示器) 现在有了一个新问题,这个小时指示器颜色和背景太像了,很难区分。我们可以给它重新创建一个材质。...MonoBehaviour代表我们自定的这个脚本是否能够像其他组件一样绑定到游戏对象上。如果像让自己写的代码能够绑定到游戏对象,那么就必须从这个类继承。...现在类的功能测试了没有问题,那么我们再干点其他的事情,把刚才的测试代码替换一下变成下面的,猜猜看会发生什么事情? ?

2.3K10
  • VR下双手与物体的交互

    对于基于Motion Controller的操作方式来说, 是最最基本的一个功能了. 然而, 这个看似简单的功能, 却有很多问题, 没有办法做到非常完美. 常见实现方法 不就是把物体挂到手上吗?...一般都是抓起来后就关掉重力影响, 放开时再恢复, 这个大家应该都有考虑到....前一种做法更常见, 因为可以有比较好的沉浸感, 不过也有人会有异议, 下文都是假设以前一种做法为基础. 当我们手上拿着东西时, 让手上的物体插入墙壁, 这时候怎么处理?...有人说也可以让它像手一样穿过墙壁呀, 但是如果这么做了的话, 这时松开手, 这个物体就卡在墙上了, 或者被弹飞(物理引擎的一些问题)....与带约束的动态物体交互 比如一个转盘, 只能绕一个轴旋转. 手持一个物体去推动这个转盘.

    1.3K60

    Unity基础系列(四)——构造分形(递归的实现细节)

    因为它是一个通用方法,实际上是可以处理一系列类型的模板。你可以通过在尖括号中传入参数它来告诉它应该使用什么类型。 现在可以把我们定制的材质分配给fractal组件了。...然后,只有当我们在最大深度以下时,才创建一个新的子级。 ? ? (最大深度) 现在进入播放模式时会如何呢? 只有一个子节点被创造出来了。这是为什么呢?因为我们从来没有给 depth 值,它总是零。...在引用同一个类的内容时,它一直被隐式地使用。例如,每当我们访问深度时,我们也可以通过this.depth来完成。...为了解决这个问题,需要对子节点进行旋转,这样他们的向上方向就会远离他们的父节点。 我通过向Initialization添加一个方向参数来解决这个问题。...(上色了,但是没有动态批处理) 这看起来有内味了!但另一件事也发生了。动态批处理过去是起作用的,但现在不行了。我们该如何解决这个问题呢? 什么是动态批处理?

    2K10

    Unity基础教程系列(十二)——更复杂的关卡(Spawn,Kill,and Life Zones)

    当某些东西进入到带有此组件的游戏对象的触发器时,该方法将被调用,collider将作为一个参数。 ? 在此方法中,用collider检索形状组件。如果它存在,就消灭它。 ?...可以通过使它们成为旋转对象的子对象而动画化。 ? (旋转Kill 区域) 2.4 生存区域 我们也可以把Kill区的概念颠倒过来。结果是一个生存区域,其中的对象存活下来,但一旦离开就会死亡。...gizmos像预期的那样发生了变形,但碰撞器的可视化仍然是一个球体。这是因为物理引擎不支持变形碰撞器。当你运行的时候,你会发现碰撞器的视觉效果确实与受区域影响的空间相匹配。 ?...(复合胶囊 3个碰撞器) 我们可以通过从两个子对象中移除碰撞器并将它们添加到根对象中来解决这个问题。但我们可以更进一步。因为我们只关心与区域的交互,这并不需要非常精确。...每当我们遇到一个空引用的时候都需要关闭它,方法就是通过移动数组的其余部分向上一个元素。我们可以调用System.Array.Copy来实现。

    1.7K51

    用Mathematica中的阿基米德螺线和复杂代数分析太空中杂耍的模式

    list=PLKhOZ0nVFPlFm799hQMJv9ynBo3vsMxf3 但是太空杂耍是什么样的呢? 当我问这个问题时,我并不是想把地球杂耍放到太空。...在失重状态下扔球 下一个需要了解的细节是,当一个球在失重状态下投掷时,它沿直线而不是抛物线运动。 我们可以将这两条信息放在一起,考虑到一个人可以以侧手翻的方式旋转并将球扔给自己。...我们设ω = 2 π,这样t的值就与转数成正比。设 t = 1/8 我们可以从坐标轴上看到它。 现在我们已经有一种方法来展示身体如何在侧手翻运动中旋转。下一个需要展示一个球的运动。...在上面的数学中,我们沿着直线扔球,我们知道它不会遇到任何力,它的动量是守恒的。但是,当我们在旋转框架中查看它时,它遵循阿基米德螺旋。...总结 在我们这里发现的方程T中还有很多需要探索和理解的地方。例如,回到上面的“旋转和非旋转”操纵对象,再次运行这条线,并输入τ = 0.3。在旋转坐标系中你会发现一个很有趣的结果。

    71230

    android自定义控件一站式入门

    实现绘制过程 为了实现PieChart的最终正确显示涉及到好几步操作,首先我们尝试(如果有遇到其它技术问题,会暂停,然后分析该问题的解决,之后再回到上级问题本身)从绘制其显示内容的方法onDraw开始。...快速转动后的flywheel效果 根据需求,用户手指快速滑过屏幕PieChart的区域后,在手指离开屏幕后,圆的转动不会立即停止,而是像现实世界中那样,当你转动一个类似固定位置的圆形轮胎之类的东西那样,...为了实现这个目标有下面几个方法: 自己实现定时旋转PieView:这种方式最大的问题是时间间隔不好确定,因为不同设备性能不同,最终界面刷新频率不一样。无法给出一个体验良好的数值。...转动动画的值的计算是Scroller完成的,这里使用ValueAnimator来获得每一帧的回调。 在解决了如何实现让PieView不断绘制的问题后,下一个要解决的是每次绘制多少度的问题。...为了取得显示中转动停止的效果,动画应该是一个转动减速直到停止的过程,而且一开始的转动速度是和手指离开时的转动速度相关的。

    1.9K50

    android自定义控件一站式入门

    实现绘制过程 为了实现PieChart的最终正确显示涉及到好几步操作,首先我们尝试(如果有遇到其它技术问题,会暂停,然后分析该问题的解决,之后再回到上级问题本身)从绘制其显示内容的方法onDraw开始。...快速转动后的flywheel效果 根据需求,用户手指快速滑过屏幕PieChart的区域后,在手指离开屏幕后,圆的转动不会立即停止,而是像现实世界中那样,当你转动一个类似固定位置的圆形轮胎之类的东西那样,...为了实现这个目标有下面几个方法: 自己实现定时旋转PieView:这种方式最大的问题是时间间隔不好确定,因为不同设备性能不同,最终界面刷新频率不一样。无法给出一个体验良好的数值。...转动动画的值的计算是Scroller完成的,这里使用ValueAnimator来获得每一帧的回调。 在解决了如何实现让PieView不断绘制的问题后,下一个要解决的是每次绘制多少度的问题。...为了取得显示中转动停止的效果,动画应该是一个转动减速直到停止的过程,而且一开始的转动速度是和手指离开时的转动速度相关的。

    1.7K00

    VUE+WebPack精美游戏设计:实现微信红包铜钱转动特性和页面数据的本地存储

    setupBuildingButton用来实现控制面板上的按钮,它先为每个建筑物设计两种按钮,当建筑物可以建造时,采用代码中button对应的按钮对象,当建筑物不可以建造时采用代码中的disableButton...建造一个发电厂,游戏就可以增加人口数量,每隔一定时间,城市的钱币数就可以自动增加,如果建造了造钱厂,那么钱币增加的时间间隔就会减少,如果建筑了商城,那么当钱币数目超过200,并且经过一定的时间间隔后,商城旁边就会跳动出一个旋转的钻石...diamondSprite函数先创建一个动画精灵对象,它定义了一个变量叫framerate,这个值用来指定一秒内连续展示几幅图片,我们规定一秒内展示16幅,在我们上面的图片中,总共有5幅图案,一旦图案展示完了后...当我们在转动的钻石精灵上点击后,程序会让游戏的总钻石数加一,并且把钻石精灵从舞台容器,也就是stage中拿掉,这样钻石精灵就从页面上消失了。...我们这个游戏是一个较为消耗时间的过程,如果玩家玩到一半暂时不想玩了,那么他可以把页面关闭,下次打开页面上,页面上显示的情况要和上次关闭时一模一样,这就要求我们的游戏在页面关闭时,把各种数据,例如当前的页面上已经有的建筑物

    99640

    Unity基础教程系列(九)——形状行为(Modular Functionality)

    1.6 移除行为 实例化新形状时,每次生成形状时添加行为的效果都很好,但是当形状被回收时,会导致行为组件重复。 ? (行为重复) 解决此问题的最快方法是简单地销毁所有行为并在回收形状时清除列表。...使用ShapeBehaviorType参数,为其添加一个私有的AddBehavior方法。让它使用switch语句来添加正确的行为组件。当我们未能添加正确的类型时,也让它返回null。...Unity组件无法从其游戏对象上分离,因此无法将它们放置在池中以便以后附加到其他游戏对象上。如果要继续使用Unity组件,则一旦将行为添加到形状中,就无法将其删除。...未使用的对象将在某个时候由垃圾收集器清理。但这个想法是,我们将回收行为,所以保持循环,即使它现在什么也不做。 ? 2.2 行为池 要回收行为,我们必须将其放入池中。...我们可以通过根据形状的生存周期进行摆动并保存为Age来解决这两个问题。 首先,将Age属性添加到Shape中。它是公开可用的,但是形状控制着自己的年龄,因此它的Setter应该是私有的。 ?

    1.3K40

    Unity基础教程系列(新)(一)——游戏对象和脚本(Creating+a+Clock)

    偶尔我的教程包含小问题和他们的答案,总是在一个灰色的框,就像上面的一个。在网页上,答案默认是隐藏的。这可以通过点击或轻敲问题来切换。 创建新项目时,可以选择其Unity版本和模板。...将时针的X刻度减少到0.3,Y刻度增加到2.5。然后改变它的X位置为0,Y位置为0.75,所以它指向第12小时,但也有点相反的方向。当它旋转起来的时候,会使得它看起来好像有一个小平衡力。 ? ?...3.3 持有一个指针 要旋转指针,Clock对象需要了解它们。我们从时针开始。像所有游戏对象一样,可以通过调整其Transform组件来旋转它。...将一个字段标记为可序列化是通过将属性附加到该字段(在本例中为SerializeField)来完成的。它写在方括号之间的字段声明的前面,通常在其上方的一行上,但也可以放在同一行上。 ?...尽管使用双精度可以解决此问题,但也会使所涉及数字的内存大小加倍,从而导致其他性能问题。游戏引擎通常使用单精度浮点值,GPU也是如此。 我们可以通过从double转换为float来解决此问题。

    4.3K20

    Unity基础教程系列(六)——更多的游戏状态(Saving All That Matters)

    我们可以使复合区域负责保存和加载它包含的所有区域,但是如果我们在应该保存的关卡上添加其他内容,该怎么办?为了使其尽可能灵活,让我们添加一种方法来配置保存关卡时应该保留的对象。...(Level3) 3.4 为新游戏重新加载 现在,在加载关卡时,序列索引会恢复,但是当玩家在同一关卡中开始新游戏时,它目前不会重置。解决方案是在这种情况下也加载关卡,从而重置整个关卡状态。 ?...在其中,有一个根对象绕Y轴以90的速度旋转。它的唯一子对象是另一个绕X轴以15的速度旋转的对象。更深一层的位置是一个顺序复合生成区域,其中有两个球形生成区域子级。...加载时,请在适当的时候读回它们。 ? 4.2 确切时间 我们仍然没有完全相同的时机。那是因为我们游戏的帧频不是很稳定。每个帧的时间增量是可变的。...(对滑动条的引用) 不能把UI绑定到属性上吗? 目前没有内置的方法可以做到这一点。我们可以提出一个自定义解决方案,但这超出了本教程的范围。对于我们的简单情况,滑块引用就足够了。

    1.3K20

    iOS开发~UIView layer 之前的关系

    对象显示在屏幕上的时候,3个子图层被合并在一起绘制出来。...每个类单独绘制他自己的图层,但当游戏图层被显示出来的时候,3个图层就全都融合在一起了。 gameView不是唯一能够添加子图层的图层。子图层也可以添加自己的子图层,并且可以构建一个完整的图层层次结构。...这个对象作用于视图的图层,根据期望的三维设置对图层进行弯折或者其他操作。应用程序可以仍然将对象看作是二维的,但是当对象呈现给用户时,会遵从已经作用于图层之上的任何变换。...x-y-z 的值定义了轴上在各个方向上的度量(介于-1和+1之间)。在一个轴上赋予值,就会指示变换绕该轴进行旋转。可以把这些值看作是插在图像上的草棍。...图层将会执行任何赋予这个属性的变换: roleView.layer.transform = myTransform; 当这个对象被显示出来时,会按照应用在他上面的变换进行显示。

    1.2K40

    【带着canvas去流浪(15)】threejs fundamentals翻译系列1-scene graph

    同时使用Phong Material材质,并将emissive属性设置为黄色(emissive属性表示没有光照时表面需要呈现的基本色,当有光照射到物体表面后,光的颜色会与该色进行叠加)。...为了修复这个问题,就需要在scene graph中加入一个新的空节点,然后将太阳和地球都变成它的子节点,如下所示: ? 我们新创建了一个Object3D对象。...它可以像Mesh的实例一样直接被添加场景结构图scene graph,但不同的是它没有材质或者几何体,它仅仅用来表示一个本地的坐标空间。这样一来,新的场景结构图就变成了: ?...这样,地球模型和太阳模型都变成了这个虚拟节点solarSystem的子节点。现在,当这三个节点都进行转动时,地球不再是太阳的子节点,所以也就不会被放大,正如我们期望的那样。...当你希望车身有颠簸的效果(而轮子没有),就需要建立一个新的虚拟节点,将车身和轮子分别作为它的子节点。 再比如游戏中的人物,它的scene graph可能是下面这样: ?

    1.7K10

    XR科普之——自由度(dof)

    举个简单的例子,升降电梯限制在一个dof里,那就是z轴(上/下)运动,但在这个dof里面它可以选择往上或者往下。同理,车轮转动也只有一个dof,但它可以选择顺时针转还是逆时针转。...答案是3dof,因为它无法像电梯那样上下移动,只能在地面上平移,并且它无法像飞机那样纵摇和垂摇,只能以一种方式旋转,所以2dof+1dof=3dof。...事实上,无论多复杂,物体的任何可能性运动都可以通过6dof的组合进行表达。例如在你用球拍击打网球的时候,球拍的复杂运动同样可以表示为平移和旋转的组合。...3 dof的XR设备是指该设备可以检测到头部向不同方向的自由转动,但是不能检测到头部的前后左右的空间位移;而6 dof的XR设备,则是除了检测头部的转动带来的视野角度变化外,还能够检测到由于身体移动带来的上下前后左右位移的变化...6 dof设备的全面普及 3dof的XR设备一般可以用来看VR电影和进行一些轻度VR游戏,但要想实现玩游戏时与场景深度交互,则需要能够支持6dof的XR设备,这样我们才能够在游戏里体验到跨越障碍、躲避子弹和怪兽

    1.5K20

    Unity零基础到入门 ☀️| 学会这些Unity常用组件,Unity中必备组件技能学习!

    Collider (物体碰撞器) 碰撞器是Unity引擎为模拟物理效果的组件 功能:可以让两个带有碰撞器的游戏对象相互接触的时候不会穿透过去,而是会发生一个碰撞效果 一般来说创建一个物体时系统会自动匹配相应的...当一个游戏对象被赋予刚体组件之后,游戏引擎就会对其进行物理效果的计算和模拟。同时我们也可以给这个对象施加各种作用力,让它运动起来。...Drag 阻力(摩擦力) 这里指的是空气阻力,属性数值影响阻碍此物体对象的直线运动的速度效果。当游戏物体受到某个作用力的时候,这个值越大越难移动。...即不再有重力,不再被碰撞等,只会呆在Transform规定的位置上不动,物体撞击时候像一堵墙一样不会倒,位置不会因碰撞而发生改变 Interpolate 差值类型如果看到刚体移动的时候运动的不是很平滑,...比如想控制游戏对象人物上台阶不会摔倒,或者高速碰到一个墙壁物体时不会胡乱转动的话,则要冻结x,y和z轴的旋转centerOfMass:相对于变换原点的质心angularVelocity 刚体的角速度向量

    3.2K31

    H5游戏开发指南

    1、准备条件 1.1、设计师应该注意的地方 移动端最大的问题在于多种设备,多种平台,多种尺寸,当我们在做手机端H5网页设计稿时(当然包含微信端的H5网页设计),如果没有做过类似的移动端的设计,UI设计师和前端工程师肯定会纠结的...所以,我们在进行H5页面内容规划布局设计的时候,不能把重要内容放在太偏下或者太偏上的位置,否则前端布局时可能出现内容显示不全的情况。...如果在编写游戏时, 你不把它放在心上,不提前加载而直接使用, 等你开发完游戏到真实的用户场景上运行时,你就会碰到问题多多,因为图片和声音文件是异步加载的,你的JavaScript代码会在资源全部加载完成前执行...游戏中的场景概念更加广泛,例如一个只是执行某些准备工作的但是没有实质的画面显示出来的state(状态),我们也把它叫做一个场景。一个游戏正是由众多场景所组成的。...当我们创建一个游戏对象后,但这只是一个空的游戏,里面什么东西都没有,接下来往游戏里添加场景,并在不同的条件下切换场景,这样,一个个场景就构成了不同的游戏。 ? 第一段代码示例中的 ?

    4.5K112

    【第二章】:用机器学习制作超级马里奥的关卡

    与典型的实际应用程序相比,该数据集实际上很小。为了生成一个真正好的海明威风格模型,最好具有几倍的示例文本。但这足以作为示例。 当我们刚刚开始训练RNN时,预测字母并不是很好。...从旧的视频游戏中提取关卡数据是一项有趣的编程练习,您应该尝试一下。 这是游戏的第一个关卡(如果玩过游戏,您可能还记得): 如果仔细观察,我们可以看到该关卡是由一个简单的对象网格组成的: ?...逐行阅读,实际上没有可捕获的模式。许多行是完全空白的。 当您将级别视为一系列列时,级别中的模式才真正出现: ? 逐列查看,这是一个真实的模式。例如,每列以'='结尾。...有几件事要注意: 它在关卡开始时将Lakitu(漂浮在云上的怪物)放在天空中–就像在真正的马里奥关卡中一样。 它知道漂浮在空中的管道应该放在坚固的块体上,而不仅仅是悬挂在空中。...下次打开您的Google Maps位置记录或Facebook位置记录时,请考虑一下,请注意,它存储了您去过的每个地方。 在机器学习中,从来没有一种解决问题的方法。

    78320

    Oculus联手Crytek,探索8大VR行动机制

    在这个行动机制下,当用户的头向前倾的时候,VR空间中的虚拟人物也会跟着向前移动,反之,当用户的头部向后倾的时候,虚拟人物就会向后移动。...结合“HMD strafing”(头显扫动),用户也可以把自己的头倾斜到一边,去体验弹球不断弹来弹去的感觉,亦或是像蛇那样在世界中穿梭的感觉。 ?...3 World Rotation(世界旋转,特指垂直转动) “World Rotation”这种运动机制使用的是Oculus手柄,用户们可以扣动扳机键,然后借由手柄的向左或向右移动,以此来转动世界。...其中一个最具潜力的就是把身体和武器应用到游戏内的虚拟化身之中,这意味着用户可以把步枪放在手上,借由手柄来扫描场景,然后在确定射击目标后扣动扳机键。 ?...也就是说,如果有用户对VR第一人称射击游戏的设计感兴趣的话,那么这个运动机制值得一试。 事实上,这3种方法都有待商榷。

    70840

    LayaAirIDE的可视化2D物理使用文档

    当我们设置angularVelocity属性为正值的时候,则按顺时针旋转位移。angularVelocity属性为负值的时候,则按逆时针旋转位移。属性值的绝对值越大,旋转位移速度越快。...表示允许刚体发生碰撞时模拟自然撞击的角度改变,看起来更加自然。当设置为false,碰撞后不会产生角度变化。 比如,一把受重力自由下落的尖刀,是希望碰到地板后,最终平躺在地板上。...当一个对象的密度越大,那么它的质量就越大,碰撞时也就相对更难以移动。 密度density值可以为零或者是正数,如果为零, 那将会是一个静止的对象。IDE里的默认值为10,如图4-4所示。...当我们把maxMotorTorque值设置为一个较小的值时,则会发现,初始转速会较慢,然后逐渐达到motorSpeed属性值的设置。效果如动图20-5的中间所示。 ?...而绑定关系,就是把自己的旋转关节或者平移关节绑到齿轮关节的joint1或者jonit2上。另一个绑定你打算与其发生齿轮咬合关系的关节。可参考图22-5与图22-4所示。

    2.4K20
    领券