射击与对撞机— UnityGameDebut

嗨,在上一篇文章中,我们两个敌人都是随机移动的(请检查github中的先前代码)。 现在,让他们向我们射击。

步骤#01 —Unity应用程序中 1)选择Soldier(1)并在Animator选项卡中; 2)Asset> ToonSoldiers_demo> animation > assault_combat_shoot添加动画3)通过将其拖动到Animator4)右键单击assalt_combat_idle并选择进行转换,然后5)将其拖动到assault_combat_shoot

步骤#02 —在“ 项目”视图 (在场景视图下)中选择动画,然后在检查器中单击1)“ 编辑” ,然后选中2)“ 循环时间”复选框,然后按3)“ 应用”按钮;

步骤#03 —选择1)转换(空闲☞拍摄), 2)单击+按钮并添加布尔拍摄3)在Inspector上单击+按钮,然后4)添加Shoot = true ; 这是所选过渡发生的条件; 5)希望有退出时间;

步骤#04 —1)逆向转换相同(拍摄☞空闲),但现在2)选择Shoot = false ; 我们会控制敌人必须向我们开枪的正确时间;

步骤#05 —打开Soldier.cs ,并添加一个属性以访问Animator对象:

  private Animator mAnimator = null; 

步骤#06 —Soldier.Awake()及以下mEnemy = transform…中,输入以下代码:

注意 :如果将mAnimator放在mEnemy的位置之前,它将不起作用…

我们还将更改3个 变量的时间(在Inspector中,您可以尝试使用以下值):

 公共浮动RightTime = 3.0f ; 
公共浮动ShootTime = 1.0f ;
public float LeftTime = 2.0f ; //获取敌人实际的gameObjectmEnemy = transform.GetChild(0).gameObject; mAnimator = mEnemy.GetComponent ();

步骤#07 —Soldier.Activate()类型中(此布尔值控制空闲☞射击过渡动画):

  mAnimator.SetBool(“ shoot”,true); 

步骤#08 —Soldier.MoveRightwards()中键入以下内容(这将激活后向拍摄☞空闲过渡):

  mAnimator.SetBool(“ shoot”,false); 

步骤#09 —在Animator中,选择assault_combat_shoot动画并进行设置:

 速度= 2 

这将加快拍摄动画的速度(根据您的喜好进行调整);

在Visual Studio上,单击SaveAll

运行动画;

敌人正在向我们开枪!

好!

现在,让我们添加一个Capsule Collider,以便可以击中敌人。

步骤#10 —要添加光线投射,我们需要有一个碰撞对象。 为此, 1)Inspector中选择ToonSoldier_demo_1 (而不是它的控制器是Soldier(1)对象); 2) 添加组件,然后3)选择Capsule Collider; 4)像这样调整数据: Y = 1.32; 半径 = 0.44, 高度 = 1.63,5 ),这样胶囊就可以遮盖敌人的躯干(这是只让专业玩家玩游戏的一种方法🏅);

步骤#11 —让我们标记敌人; 1) 选择ToonSoldier并在检查器中查找Tag2) 添加Tag… ,键入敌人,然后3) 返回选择ToonSoldier4) 检查敌人作为其标签; 在脚本中,我们将使用敌人标签来引用该对象; 对其他ToonSoldier重复此操作;

现在,将其复制到其他士兵(2); 做到:选择ToonSoldier_demo_1,单击检查器上的“应用”按钮; 现在选择ToonSoldier_demo_2 ,然后再次单击Apply ; 所有设置都复制到另一名士兵。 这是预制件! 酷吧?

步骤#12 —现在,让我们添加攻击敌人的逻辑; 转到Crosshair.Update() ,这是完整的方法:

  //每个框架调用一次更新,而无需更新(){this.transform.position = Input.mousePosition; 如果(Input.GetMouseButtonDown(0)){Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);  RaycastHit热门歌曲; 如果(Physics.Raycast(ray,out hit)){//Debug.Log(hit.transform.gameObject.tag);  if(hit.transform.gameObject.tag ==“敌人”){//销毁(hit.transform.gameObject);  hit.transform.parent.GetComponent ()。Hit();  }}}} 

步骤#13 —转到Soldier.cs并创建此方法; 当我们用十字准线击中敌人时,这将被称为;

 内部无效Hit() 
{
mAnimator.SetTrigger(“ fall”); Invoke(“ MoveRightwards”,1.5f);
}

好! 现在,当我们击中敌人时,将调用动画倒下,然后1.5秒后,MoveRightwards()使敌人的生活恢复原状……

这对于今天的帖子来说足够了……我们准备了可以实际运行秋季动画的基础结构,因此完成了一项关键任务。

在下一篇文章中,我们将Blender制作自定义动画

再见了,谢谢,给我您的反馈;)

感谢您的光临! 敬请关注!

Github

#0#1#2#3#4#5#6#7#8#9#10

参考和学分

用Unity制作游戏(1–10):Jayanam的基础知识