C# 统一的近战系统
我是unity和programming的新手。我想让我在团结的第一场比赛中战斗。你能帮助我吗?我尝试了这个家伙的教程,但他的脚本中有很多错误。我的一个项目中也有类似的设置 玩家: 设置玩家的攻击动画,在开始时调用攻击,在结束时调用停止攻击 看 假设右手是武器的父变换,你可以激活你的武器。将以下方法添加到玩家的脚本中:C# 统一的近战系统,c#,visual-studio,unity3d,scripting,C#,Visual Studio,Unity3d,Scripting,我是unity和programming的新手。我想让我在团结的第一场比赛中战斗。你能帮助我吗?我尝试了这个家伙的教程,但他的脚本中有很多错误。我的一个项目中也有类似的设置 玩家: 设置玩家的攻击动画,在开始时调用攻击,在结束时调用停止攻击 看 假设右手是武器的父变换,你可以激活你的武器。将以下方法添加到玩家的脚本中: public void Attack() { foreach (Weapon w in rightHand.GetComponentsInChild
public void Attack()
{
foreach (Weapon w in rightHand.GetComponentsInChildren<Weapon>())
{
w.Attack();
}
}
//called by animations
public void StopAttack()
{
foreach (Weapon w in rightHand.GetComponentsInChildren<Weapon>())
{
w.StopAttack();
}
}
公共无效攻击()
{
foreach(右手中的武器w.GetComponentsInChildren())
{
w、 攻击();
}
}
//由动画调用
公开无效停止攻击()
{
foreach(右手中的武器w.GetComponentsInChildren())
{
w、 停止攻击();
}
}
武器:添加一个对撞机并检查“是否触发”
我的敌人都有一个叫做“坏蛋”的职业,可以和坏蛋一起受到伤害。伤害(浮动量)。“蒙版”用于优化,应设置为敌人所在层。如果不确定,请将“掩码”设置为“所有”
public class Weapon : MonoBehaviour
...
{
public LayerMask mask
public float dmg;
private bool canDmg;
public float attackDuriation;
private float timeSinceAttack;
void Update()
{
timeSinceAttack += Time.deltaTime;
if(timeSinceAttack > attackDuriation)
{
canDmg = false;
}
}
public void Attack()
{
canDmg = true;
timeSinceAttack = 0;
}
public void StopAttack()
{
canDmg = false;
}
void OnTriggerEnter(Collider other)
{
if (canDmg)
{
if(mask == (mask | (1 << other.gameObject.layer)))//if included in the mask
{
badguy bg = other.GetComponentInParent<badguy>();
if(bg != null)
{
bg.Damage(dmg);
canDmg = false;
}
}
}
}
}
公共级武器:单行为
...
{
公共层掩码
公共浮动dmg;
私人布尔坎德明;
公众浮标攻击;
私人攻击;
无效更新()
{
timeSinceAttack+=Time.deltaTime;
如果(攻击时间>攻击持续时间)
{
canDmg=假;
}
}
公开无效攻击()
{
canDmg=真;
时间间隔=0;
}
公开无效停止攻击()
{
canDmg=假;
}
无效对撞机(对撞机其他)
{
if(坎德毫克)
{
如果(mask==(mask |)(1),则修复第一集错误。重复此操作,直到所有错误都消失,以便将来参考,请参阅