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

在spritekit中随机化不同的敌人,向玩家移动

在SpriteKit中,可以通过随机化不同的敌人并使其向玩家移动来增加游戏的变化和挑战性。下面是一个完善且全面的答案:

在SpriteKit中,可以使用以下步骤来随机化不同的敌人并使其向玩家移动:

  1. 创建敌人类(Enemy Class):首先,你需要创建一个敌人类,该类应该包含敌人的属性和行为。属性可以包括敌人的速度、外观、攻击力等。行为可以包括敌人向玩家移动的逻辑。
  2. 创建敌人实例:在游戏中,你可以根据需要创建多个敌人实例。可以使用随机数生成器来随机选择敌人的类型或属性。例如,你可以定义不同类型的敌人,如怪物、飞行器、僵尸等,并为每种类型设置不同的属性。
  3. 移动敌人:一旦你创建了敌人实例,你需要实现敌人向玩家移动的逻辑。可以使用SpriteKit提供的物理引擎或自定义的移动算法来实现敌人的移动。例如,你可以使用SKAction来定义敌人的移动路径或使用物理引擎中的力和速度来模拟敌人的移动。
  4. 碰撞检测:为了使敌人与玩家进行交互,你需要实现碰撞检测。SpriteKit提供了碰撞检测的功能,你可以定义敌人和玩家之间的碰撞规则,并在碰撞发生时执行相应的逻辑,如减少玩家的生命值或增加得分。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云游戏多媒体引擎(GME):腾讯云游戏多媒体引擎(GME)是一款专业的游戏语音和音视频通信解决方案,可为游戏开发者提供高质量、低延迟的语音和音视频通信能力。了解更多信息,请访问:腾讯云游戏多媒体引擎(GME)
  • 腾讯云对象存储(COS):腾讯云对象存储(COS)是一种安全、稳定、低成本的云端存储服务,适用于存储和处理各种非结构化数据,如图片、音频、视频等。了解更多信息,请访问:腾讯云对象存储(COS)
  • 腾讯云云服务器(CVM):腾讯云云服务器(CVM)是一种灵活可扩展的云计算服务,提供高性能、高可靠性的虚拟服务器。你可以使用腾讯云云服务器来部署和运行你的游戏服务器。了解更多信息,请访问:腾讯云云服务器(CVM)

请注意,以上推荐的腾讯云产品仅供参考,你可以根据实际需求选择适合的产品。

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

相关·内容

碰撞和掩码-将物理属性应用于物件

在本节中,我们将了解一个必要且非常令人兴奋的主题:碰撞!您可能没有注意到它,但它无处不在。当两个物体撞击另一个物体时发生碰撞。涉及碰撞的最明显的游戏功能是让我们的玩家死亡。让我们进入吧!...enum Mask: Int { } 位掩码和原始值 在枚举掩码中,我们将声明四种情况:敌人kill,玩家,奖励和地面。由于我们没有为它们分配原始值,因此Swift会自动为它们分配一个。...在位操作之后,敌人的位掩码的值为1,玩家为2,奖励为4,地面为8。...在didBegin中,让我们首先添加一个if语句。然后,如果玩家和敌人之间发生碰撞,则创建一个动作以将玩家返回到CGPoint(x:-300,y:-100)。...将陷阱和玩家的掩码更改为以下内容: 陷阱: 分类掩码:1 碰撞掩码:2 字段掩码:默认 接触掩码:2 玩家: 分类掩码:2 碰撞掩码:1 字段掩码:默认 接触掩码:1 运行模拟器并将玩家移动到陷阱

96630

Godot3游戏引擎入门之十二:Godot碰撞理论以及KinematicBody2D的两个方法

如果你熟悉 iOS 游戏开发框架 SpriteKit 的话,那么这两个概念对你来说很简单,这里我们先列举一下它们的定义: Layer 即图层,在代码中为 collision_layer ,它表示物体所处的碰撞图层...这些图片处理软件中的图层概念,用于把不同的内容分离开来,游戏中碰撞节点一般处于某一个特定的碰撞图层中。...,敌人和金币的掩码设置都是 1(player) ,所以它们分别也会检测与玩家之间发生的碰撞,但是敌人与金币、敌人与敌人、金币与金币、玩家与玩家之间则都不会互相发生任何碰撞检测!...,在我们的 Demo 中玩家还是可以检测到他们。...应用实践 这两个方法确实有点绕,别急,先搞清楚他俩的相似点以及不同点,然后我们就可以在不同场合中灵活使用了。 ? 1.

2K20
  • 《耻辱2》潜行玩法机制分析

    而察觉状态是指,敌人“察觉”到了玩家的存在,直接向玩家所操纵角色的方向进行相对快速的移动或是改变巡逻路线进行相对快速的移动,并具有攻击性,无法回到巡逻状态(如图3)。...、宽容度范围、玩家在敌人视野中的尺寸、玩家相对敌人移动速度、玩家进入敌人视野范围的可能性。...图 5 从游戏内部设计层面看,不同游戏元素对“玩家在敌人视野中的尺寸、玩家相对敌人移动速度、玩家进入敌人视野范围的可能性”的影响不同。...如果利用不当,道具也会提高玩家进入敌人视野范围的可能性。 在《耻辱2》第四关:机关宅邸中,主要有四种类型的敌人,这四种类型敌人的各方面参数不同,对玩点的影响也不同(如表2)。...图 6 从玩家层面看,玩家的选择也能影响潜行玩法机制的玩点的具体表现。比如,在同种情境下,玩家所操控角色的状态不同,玩家出现在敌人视野中的可能性也不同(如表3)。

    1.2K10

    一个没有对手的英雄是什么体验?如何在你的Python游戏中添加反派

    你应该像往常一样看到你的玩家,以及在本关中添加的敌人。 打败敌人 如果对玩家没有影响,那么敌人就算不上是敌人。当玩家与敌人碰撞时,通常会造成伤害。...移动敌人 如果你想要的话,静止不动的敌人也会很有用,例如可能伤害玩家的尖刺或陷阱,但是如果敌人可以四处走动,游戏将更具挑战。 与玩家精灵不同,敌方精灵不受用户控制。所以它的动作必须是自动化的。...敌人的子画面无法计数,因此你必须创建一个变量来跟踪敌人移动了多少步伐,并根据计数变量的值对敌人进行编程以使其向右或向左移动. 首先,在您的Enemy类中创建计数器变量。...敌人将沿任一方向移动多远的实际数字取决于你的屏幕大小,以及最终可能取决于敌人正在行走的平台的大小。从细小开始,逐步适应结果。...作为练习,你还可以尝试改变不同敌人精灵移动的距离。

    1.7K40

    SpriteKit简介-创建您的第一个iPhone平台游戏

    在本节中,您将学习如何使用SpriteKit创建自己的平台游戏。您将学习如何实现所有基本游戏功能,如玩家移动,玩家跳跃,相机工作,动画等。 你正在建设什么 这是您将要构建的iPhone平台游戏。...什么是SpriteKit? SpriteKit是一个功能强大的基于2D精灵的框架,适用于Apple的游戏开发。SpriteKit使用SKView这是一个场景,它是你在屏幕上看到的视觉效果。...即使是初学者,如果你想创造你的第一款游戏,2D游戏毫无疑问是在这个新世界中传播的最佳方式。如果您想了解更多关于SpriteKit的信息,请点击此处链接到Apple的SpriteKit页面。 ?...建立 让我们打开Xcode,一个小窗口会弹出三个不同的选项,选择Create a new Xcode project。Xcode将为我们提供一些不同的模板来启动我们的项目。...我们将为我们的角色提供不同的物理属性,如重力,碰撞,摩擦等等。 物理特性(地面) 让我们在地面上添加一些物理属性。

    3.6K30

    勇敢者的游戏,开启属于《酒桌骑士》的冒险

    精彩的故事往往来自酒吧。疲惫的冒险者围坐在吧台,在熊熊燃烧的烛光中,将他们的奇遇故事娓娓道来。...在那里,玩家只需请坐在吧台的冒险者喝一杯,冒险者就会向玩家讲述那些他们经历过的,匪夷所思的传奇故事。而玩家将会被带入故事场景,亲身体验那些骇人听闻的经历。 ?...如果恰好打断了冒险者重要的提示,那只能自求多福了。 冒险中的战斗是残酷的,玩家需要抓起斧头或狼牙棒,抵御那些不经意出现的敌人。注意,击打头部和脚踝是有效的制敌方法。...不过,很多时候周围的各种武器并不能给你太大的帮助。游戏中,玩家需要与敌人保证适当的距离,因为只要一靠近,敌人就会全部冲过来。 ? 体验时,玩家使用触摸板控制移动,可以旋转视角,观察周围的环境。...但无法改变移动速度,只能步行,不能跑步。而吧台旁不同的人物代表不同的故事关卡,玩家可以自由选择。 此外,该游戏还支持多人合作闯关,最多可以5人同时体验。玩家可以与好友组队一起进行冒险。

    69070

    个人塔防游戏Demo开发思路(UE4)

    图片 功能实现思路 场景搭建 放置光源 新建空项目后场景中没有光照,是纯黑的。打开引擎的放置Actor菜单,点击左侧菜单中的光源选项,向场景中拖入一个天光,此光照不产生阴影仅作为背景光。...因为在游戏中,防御塔需要锁定搜索到的第一个敌人,也即是离终点最近的敌人会被优先攻击。所以敌人基类拥有一个累计移动路程的属性,通过对数组中的敌人进行对比即可得到路程最大的敌人,优先锁定。...子弹Actor实现 子弹追踪敌人 子弹需要一定初速度从炮口发射出去,这需要添加一个发射物移动组件,该组件可支持受影响后反弹或向目标前进等行为。...UE4存档系统中的插槽是指用于存储和加载不同类型数据的一种机制。在一个存档文件中可以包含多个插槽,每个插槽可以存储不同类型的数据,插槽还可以进行重命名、复制、删除等操作。...这样,玩家可以在游戏中选择不同的插槽进行存档和加载,以达到不同的游戏进度和状态。

    1.1K10

    玩家状态机-使用GameplayKit管理不同的状态和动画

    在本节中,我们将了解GameplayKit状态机,然后我们将让我们的玩家跳转并给他一些其他动画,所以扣紧并为这一知识的骑行做好准备。...GameplayKit状态机 首先,我们需要了解玩家的所有不同状态,因为我们将把它们应用到我们的游戏中。 ?...StunnedState 最后,StunnedState是玩家被陷阱或敌人触碰时的动画。 状态 正如您在上图中所注意到的那样,所有状态都是相互连接的,这意味着所有状态都以不同的方式相关。...其中的代码与IdleState非常相似。然而,纹理变量是一个数组,其中包含我们玩家的不同帧,因此当他走路时,他的动画就好像他的腿和手臂在现实生活中一样移动。...dl=0 结论 在本节中,我们了解了GKStateMachine,为我们的玩家分配了不同的状态,并对何时进入和退出这些状态应用了某些条件。最重要的是,我们为它们添加了动画并应用它们。

    1.9K20

    摄影机-跟随玩家并添加背景视差

    视差动画 它是一种动画,背景中的不同元素以不同的速度移动,并且在游戏中给出了深度的幻觉。 变量 让我们声明山脉,月亮和星星的变量,以使视差动画成为可能。...声明变量 在didMove方法中,初始化变量。 视差效应 为了实现视差动画,我们需要以不同的速度移动每个元素。要计算速度,您需要将每个层的速度加倍。...run(parallax5) 请注意,在这里,我们只希望山脉受到视差动画的影响。他们将以不同的速度跟随玩家的动作。由于这些山脉最接近他,玩家将以比山2和山 1更快的速度通过山3。...如果我们不添加这些移动动作,当玩家离开时它们将从场景中消失。 时间线动画 它是一种使用您运行时间来创建动画的关键帧的动画。在场景中,您可以轻松制作时间轴动画而无需一行代码。...在媒体库中,将其余的宝石图像拖放到纹理中框。在SpriteKit场景中,您不必总是运行模拟器来预览动画。点击Animate,瞧,宝石现在已经动画了!要使其循环,请单击循环图标并选择无限图标。

    1.3K30

    操纵杆控制-使用控制器移动玩家

    在本节中,我们将播放器连接到操纵杆,这样我们就可以用旋钮移动它。我们还将了解触摸,将旋钮重置为其初始状态以及如何控制播放器的位置,以便他始终在X轴上朝向正确的方向。...在X轴上移动我们的玩家 由于我们的旋钮正常工作并连接到我们的播放器,因此下一步,我们需要让我们的播放器在其X轴上移动。所以,让我们在Measure变量之后创建一些新变量。...在游戏开始时,时间间隔初始化为0,玩家面向右,他的移动速度设置为4。 游戏循环 为了制作游戏循环,让我们在文档的底部创建一个新的扩展,让我们称之为GameLoop并声明其变量。...如果您运行模拟器,您将看到我们现在可以使用操纵杆控制我们的玩家在X轴上的移动。但是,我们需要根据其方向翻转我们的播放器图像。 水平翻转我们的播放器 要控制我们玩家的水平翻转,我们需要设置其X位置。...所以在本节中,我们学到了很多东西,比如触摸功能,如何移动旋钮,如何重置旋钮的初始位置,我们让玩家在X轴上移动,我们也根据X轴方向水平翻转。

    1.3K10

    【攻克Dota2】OpenAI自学习多智能体5v5团队战击败人类玩家

    刚刚,OpenAI 宣布了一个大新闻——还记得去年他们的AI在 Dota2 1v1 比赛中战胜了人类职业玩家 Dendi吗?...在Dota过程中,队伍(units)和建筑物只能看到他们周围的区域。地图的其他部分隐藏在雾中,敌人和他们的战略也是隐藏的。因此,比赛需要根据不完整的数据进行推断,并且需要对对手的最佳状态进行建模。...后来,当一名测试玩家一直不断地击败我们的1v1 bot时,我们增加了随机训练,测试玩家开始出现失败。(我们的机器人团队同时将类似的随机化技术应用于物理机器人身上,以便从模式世界转换到现实世界。)...在同步梯度下降过程中,每个GPU计算batch部分的梯度,然后对梯度进行全局平均。下图显示了不同数量的GPU同步58MB数据的延迟。 ?...——— Blitz 我们发现OpenAI Five: 为了换取控制敌人的优势路safelane,多次牺牲自己的优势路(上路是夜魇,下路是天辉),迫使战斗向敌人更难防御的一边进行。

    43900

    自己动手写游戏:飞机大战

    (2)计划生育好 在整个游戏中,我们的玩家飞机对象只有一个,也就是说在内存中只需要存一份即可。这时,我们想到了伟大的计划生育政策,于是我们想到了使用单例模式。...(3)对象的运动 在整个游戏过程中,玩家可以通过键盘上下左右键控制玩家飞机的上下左右运动,而飞机的运动本质上还是改变游戏对象的X轴和Y轴的坐标,然后一直不间断地在窗体上重绘游戏对象。...相比玩家飞机的移动,电脑飞机的移动则完全是通过程序中设置的随机函数控制左右方向移动的,而玩家飞机发出的子弹执行的运动则是从下到上,而电脑飞机发出的子弹执行的运动则是从上到下。 ?...那么,在飞机大战中主要是判断两种情况:一是玩家或电脑飞机发射的子弹是否击中了对方?二是玩家是否撞到了敌人飞机?   ...在客户端中,玩家飞机可以通过不停地发射子弹向不同类型的电脑飞机来获取得分,但是如果被敌人飞机的子弹击中分数也会被扣去一部分。 4.3 服务端计算成绩客户端显示 ? ?

    1.6K10

    100天教程:在Unity中为敌人创造AI动作

    将敌人向玩家移动 设置模型 为了能够为我们的敌人创建AI动作,我们需要将Nav Mesh Agent组件添加到我们的Knight游戏对象中。我要唯一改变的设置是速度,我设置为2。...Radius 为1.5 4)Y Height 为1 与我们在Survival Shooter教程中所做的一样,当我们的Knight接近我们时,我们将切换到一个攻击动画玩家此时也受到敌人伤害。...为了做到这一点,我们要 在我们的敌人附上一个 网格碰撞器(Mesh Collider)。 与以前的碰撞器不同的是触发器,这个实际上将检测敌人何时与玩家碰撞。...所以这就是我们要做的。找到Attack1并按Ctrl + D复制我们的剪辑。我要将其重命名为 Knight Attack ,我将把它移动到我的animations(根目录下创建的)文件夹中。...2)在Knight Attack 开始时创建一个动画事件, 并设置_isAttacking布尔值为true,然后在我们的Update()中,如果敌人正在攻击,并且我们与他们交互,则玩家会受到伤害,然后设置

    2.1K90

    黑暗冒险VR游戏《In Death》|死亡不是结束,而是永恒的开始

    可别小看冲锋这个能力,想一想,一个全身铁疙瘩的大汉手持利剑向玩家奔过来的感觉,说实话小编玩的时候感觉慌慌的。 ? 剩下来的敌人小编就不剧透啦!每个怪都有各自的特色,等待你们后续的挖掘哦!...作为这款游戏的核心要素,弓箭可不仅仅只是攻击的手段,它更是玩家移动的媒介。通过射出手中的位移之箭,玩家可以到任何一处够得到的地方。没有数量限制的位移之箭,给这款游戏带来了很多充满创意的玩法。...你追我赶,运动中消灭敌人 来追我啊,追的到我,我就让你“嘿嘿嘿”。这是猥琐流玩家们最爱说的话,用在这里再恰当不过了。...用一根普通的箭矢把敌人勾引、分割开来,不待敌人靠前,立即抽身后退,拉开一段距离,反身射杀敌人。敌进我退,敌退我进。在运动中消灭敌人。...面对不同的怪物,该用什么样的箭矢,聪明的玩家自然会做出最正确的选择。

    73920

    Godot3游戏引擎入门之八:添加可收集元素和子场景

    一、前言 在前面的游戏地图基础上,我们已经实现了玩家的上下移动控制,也有了相应的碰撞体功能,一个小小的游戏世界已经打造好,不过对于一个完整的游戏来说还是缺少点什么,没有探索的乐趣就没有吸引力,因此,这也就是我们本篇要实现的目标...这其实有点类似程序中的面向对象思想,如果你有使用 Unity 开发游戏的经验,那么你对 Unity 中深入人心的 Prefab 预制体概念肯定非常熟悉;同样地在 Apple 中开发 2D 游戏,使用 SpriteKit...在我们的游戏主场景中,玩家 Player 是一个五脏俱全的子节点,这里我们完全可以把它当做一个单独的场景进行开发利用,这样的好处在于可以单独修改 Player 节点,提高效率,而且当你有需求要在游戏的主场景中添加多个玩家的时候...先构思一下金币在游戏世界中的表现:有一个金币,它闪耀在世界的某个角落,如果有幸被玩家拾取,将会播放一段动画,然后消失于人间!...链接按钮,然后选择我们保存的金币场景资源 Coin.tscn 文件,即可实例化一个金币到主场景中,重复这个操作,多添加几个金币,放置到不同的位置,充分发挥你的想象吧! ?

    1.9K30

    Linux系统之安装Ninvaders太空入侵者小游戏

    游戏的目标是尽可能地消灭所有的外星飞船并保护地球的安全。玩家可以通过控制自己的飞船左右移动,并发射子弹来攻击敌人。敌人飞船会不断向玩家的方向移动,并发射子弹进行反击。...键盘方向键移动,空格键发射。 六、总结 在Ubuntu的命令行终端中体验"Ninvaders",是一种将复古情怀与现代技术融合的独特方式。...游戏的操作非常直观,使用左右箭头键来操控飞船的移动,空格键则用于发射子弹,这种设计让游戏易于上手但难以精通。...随着游戏的进行,外星飞船阵列的移动和攻击模式逐渐加快,这要求玩家具备快速反应和精准操作的能力。在躲避敌人子弹的同时,准确地瞄准并击落敌人,既考验了玩家的技巧也激发了竞争心。"...对于那些怀念老式游戏或者想要探索不同游戏平台的玩家来说,这绝对是一次值得尝试的实践。通过在终端输入"ninvaders"命令,便能瞬间开启一段充满挑战与乐趣的太空冒险之旅。

    12500

    Unity Demo教程系列——Unity塔防游戏(二)敌人(Moving Through a Maze)

    (敌人出现在出生点上) 3 移动敌人 一旦敌人出现,它应该开始沿着路径移动到最近的目的地。我们必须为它们设置动画,以实现这一目标。我们首先简单地将它们在图块之间滑动,然后使它们的移动更加复杂。...给GameTile一个公共getter属性来检索路径上的下一个瓦片。 ? 给定一个瓦片和一个向其移动的瓦片,敌人就可以确定单个瓦片的起点和终点。通过跟踪进度来在这两者之间进行插值。...(敌人在转角处转弯平滑) 3.7 常量速度 到目前为止,无论敌人在砖块内如何移动,敌人的速度始终为每秒一砖块。但是它们覆盖的距离取决于状态,因此以每秒单位表示的速度会有所不同。...目前,敌人一到达目的地便消失,但让我们将其延迟到到达目标瓦片的中心为止。为此创建一个PrepareOutro方法,设置向前移动,但仅向瓦片中心移动,并加倍进度以保持速度恒定。 ?...让我们通过随机化它们的大小,偏移量和速度使它们更加独特。 4.1 浮点随机 我们将通过从一系列值中随机选择敌人的特征来对其进行调整。

    2.3K10

    ❤️创意网页:抖音汉字鬼抓人小游戏复刻——附带外挂(“鬼鬼定身术”和“鬼鬼消失术”)坚持60秒轻轻松松(●‘◡‘●)

    简介 本篇博客将介绍如何使用HTML5的Canvas元素和JavaScript编写一个简单的追逐游戏。在这个游戏中,玩家可以通过键盘控制一个角色“我”,并且需要躲避不断增加并追逐“我”的敌人“鬼”。...这些设置包括游戏画布的大小、角色的移动速度以及游戏是否结束的标志等。同时,我们还需要定义一个玩家角色对象和敌人鬼对象数组,用于存储玩家和敌人的位置和状态。...在Canvas中,我们使用ctx.fillText()来绘制文本,用于显示角色和敌人的图形。...我们随机生成敌人的位置,并将其加入敌人数组中。...for (const ghost of ghosts) { drawGhost(ghost.x, ghost.y); // 敌人鬼向角色移动 if (ghost.x <

    19010

    Godot3游戏引擎入门之十一:Godot中的粒子系统与射击游戏(下)

    提醒大家的是,子弹场景有两个: Bullet.tscn 和 EnemyBullet.tscn ,从名字可以看出来,一个是用于玩家发射的子弹,一个是敌人发射的子弹,他们除了子弹的图片也就是外观不同之外,其他部分...子弹场景主要用于玩家和敌人发射的子弹,每颗子弹在发射后会一直往一个方向飞行,飞行过程中检查是否与其他对象相撞,然后在代码中做出相应的处理: extends Area2D signal destroy_object...前面两个节点很好理解,实际开发中,对于 ParallaxBackground 背景节点,我们一般会应用于有摄像机节点的游戏中,这样背景会自动跟随摄像机滚动,在 2D 游戏中我们可以设置多层背景,比如靠近玩家的树木...敌人场景 游戏中敌人主要有两种,一种是外星人,另一种是坠落的岩石,脚本代码也都很好理解,这里我给敌人添加了一些有趣的随机元素,它们可以水平移动并且随机发射子弹,核心代码如下: # 移动并发射,生命周期内无限循环...他们的处理方式稍微不同,这里可以从代码中看出来: # 爆炸对象的类型:岩石、敌人、玩家 var type = 'rock' setget _setType func _ready(): match

    1.5K40

    OpenAI:人工智能程序在Dota2的5V5比赛在中击败人类玩家

    而象棋通常在40次移动前结束,围棋则是前150次移动,几乎每一次都是战略性的。 部分观察状态。队伍和建筑物只能看到他们周围的区域。地图的其他部分隐藏在雾中,敌人和他们的战略也不可见。...为了强制在战略空间进行探索,在训练期间(并且只在训练期间),我们随机化了单位的属性(健康,速度,开始水平等),并且它开始殴打人类。...后来,当一名测试玩家一直在击败我们的1v1机器人时,我们增加了随机训练,测试玩家开始失败。(我们的机器人团队同时将相似的随机化技术应用于物理 机器人,以便从仿真转移到现实世界。)...感觉就像五个无私的玩家一样,知道很好的总体战略。——Blitz 我们观察到OpenAI Five: 为了换取控制敌人的安全lane,反复牺牲了自己的安全lane,迫使对手难以保卫对手。...它是这样做的:(1)建立成功的ganks(当玩家在地图上移动以埋伏敌方英雄),当玩家在他们的车道中过度扩张时;(2)在对手组织起来之前反制。

    74540
    领券