首页 > 其他分享 >黑魂 211深度优先搜索方法制作双手控制

黑魂 211深度优先搜索方法制作双手控制

时间:2023-07-22 18:12:33浏览次数:29  
标签:优先 遍历 WeaponManager 211 DeepFind ybot Transform 黑魂 子级

创建一个新脚本TransformHelpers放进Scripts文件夹的Helper文件夹里

接下来要实现往Unity放进新的定义方法。

把TransformHelpers修改成:

 把这个hihi方法放进WeaponManager的start函数里:

 测试这个方法在运行的时候调用的过程。

接下来我们按照hihi方法的参数重新创建一个方法叫DeepFind(深度搜索)。

public static Transform DeepFind(this Transform parent,string targetName)
{
  foreach (Transform child in parent)       Transform里有IEnumerable可以把Transform的子级遍历出来,用parent作为参数,就代表物体,把物体的子级遍历出来。
  {
    Debug.Log(child.name);
  }
  return null;
}

然后把WeaponManager的hihi函数改成DeepFind,看看在ybot的组件里能不能找到good这个字符串。

 结果打印出来对应ybot的组件,因为两个ybot都绑定了WeaponManager脚本,开始执行都会运行这个DeepFind方法,把ybot下所有的子级都搜索并打印出来。

在TransformHelper的foreach里再加入一行代码:

 代表可以遍历子级里的子级,循环下去就相当于递归。遍历子级里子级的子级,直到找到目标物体。

 设定成找到ybot里的组件用来测试。成功!!!!!

所以可以通过这个方法,在WeaponManager里搜索对应的单个物体。

 

标签:优先,遍历,WeaponManager,211,DeepFind,ybot,Transform,黑魂,子级
From: https://www.cnblogs.com/dontpanic1703/p/17573694.html

相关文章

  • 黑魂210 获取左右手控制
    在ActorManager脚本里,新建一个GameObject变量叫model,对应值是ac.model新建一个WeaponManager变量叫wm,去获取model里的WeaponManager。 在Awake的wm下面加上条件:if(wm==null){wm=model.AddComponent<WeaponManager>();}wm.am=thi......
  • 黑魂 209武器开关控制
    把状态机的hit修改,选中hit到ground的箭头点开settings,将interruptionSource改成CurrentState。   点击状态机attack1ha,把里面的动画改成同名,点击edit改名,点开event,把攻击动画帧和收刀动画帧设置两个点(WeaponEnable和WeaponDisable)。最后点Apply a,b,c三个动作都是这......
  • 深度优先搜索dfp学习
    >>定义深度优先搜索属于图算法的一种,英文缩写为DFS即DepthFirstSearch.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次.(accordingtoBaidu)>>几个例子eg11215迷宫 (求是否有路径)http://ybt.ssoier.cn:8088/problem_show.php?pi......
  • 黑魂 208 角色管理与战斗管理的链接
    把敌人的自己的武器tag改成Weapon,玩家的武器范围(Radius)改成3.5。在BattleManager的OnTriggerEnter里写上判断武器的代码:if(col.tag=="Weapon"){am.DoDamage();  对应下面的DoDamage被武器接触后执行的DoDamage函数。;}在ActorManager脚本下面新增一个函数:......
  • 黑魂 207角色管理
    新建一个ActorManager脚本代码。在class下面写:publicBattleManagerbm;定义一个新的战斗管理start改成:voidAwake(){GameObjectsensor=transform.Find("sensor").gameObject;}把这个脚本绑定在PlayerHandle里。在GameObject下面加上:bm=sensor.Ge......
  • 黑魂 206战斗状态管理
    在PlayerHandle里找到sensor,新建一个脚本BattleManager。在class上面加入:[RequireComponent(typeof(CapsuleCollider))]。保存之后,在sensor重新引入这个脚本就会自动创建一个胶囊体新建一个Layer叫Sensor,把sensor的Layer改成Sensor。敌人sensor的Layer也要一样: 参数都改成......
  • 黑魂 建立被击打动画
    在swordandshield动画包里找到impact2,先选中PlayerHandle的ybot,然后点开Animator的BaseLayer。把impact2的动画拖进去,在AnyState拖出箭头指向impact动画,动画改名为hit,然后在Parameters里添加一个hit的Trigger。在箭头里添加动画条件hit。然后我在PlayerHandle里添加一个......
  • 黑魂 Ai
    首先把玩家模型复制一份出来,修改好复制的模型颜色把玩家模型标签改成Player,复制的为Enemy,注意不要给模型上其他的物件写上标签。只单独给Handle模型。然后新建一个脚本代码DummyIUserInput在IUserInput脚本里下面新建UpdateDmagDvec函数:protectedvoidUpdateDmagDvec(float......
  • 伪类选择器,伪元素选择器,选择器的优先级,CSS属性相关
    伪类选择器<style>/*未访问时候显示的*/a:link{color:#FF0000;}/*鼠标移动到链接上*/a:hover{color:#FF00FF}/*选定的链接*/a:active{color:#0000......
  • 黑魂复刻摄像机修改
    打开CameraController在13行下面新建publicboolisAI=false;在Awake函数里,增加判断条件,并把下列原先的代码放假判断式:if(!isAI){piCamera=Camera.main.gameObject;lockDot.enabled=false;Cursor.lockState=CursorLockMode.Locked;}FixUpd......