
POW 锤 (U7)
[Scripted weapon] 这款游戏严重缺乏超级马里奥主题武器,所以我制作了POW锤!用POW方块击中任何东西,将敌人击飞,就像在超级马里奥中一样!
查看大图这是代码。如果你们感兴趣的话,我会进行注释(在评论中告诉我):
public class ItemPOW : MonoBehaviour
{
protected Item item;
protected ItemModulePOW module;
public float forceMultiplier;
public Collider POW;
public float POWTimer = 0f;
public float cooldown = 0.5f;
public int i = 0;
protected void Awake()
{
item = this.GetComponent<Item>();
POW = item.GetComponentsInChildren<Collider>()[2];
item.CollisionEvent += OnPOWCollisionEvent;
module = item.data.GetModule<ItemModulePOW>();
forceMultiplier = module.forceMultiplier;
}
void OnPOWCollisionEvent(ref CollisionInstance collisionInstance)
{
if(collisionInstance.sourceCollider == POW || collisionInstance.targetCollider == POW)
{
if (POWTimer > cooldown)
{
POWTimer = 0f;
foreach (Creature npc in Creature.list)
{
if (npc != Player)
{
if(npc.state == Creature.State.Alive || (npc.state == Creature.State.Stunned && npc.ragdoll.isGrounded) || (npc.state == Creature.State.Dead && npc.ragdoll.state == BS.Ragdoll.State.Dead))
{
if (npc.state == Creature.State.Alive)
{
npc.ragdoll.SetState(BS.Ragdoll.State.Fallen);
}
if(npc.state == Creature.State.Dead)
{
npc.ragdoll.SetState(BS.Ragdoll.State.Fallen);
}
foreach (RagdollPart ragdollPart in npc.ragdoll.parts)
{
ragdollPart.rb.AddForce(Vector3.up * forceMultiplier, ForceMode.Impulse);
}
}
}
}
}
}
}
void FixedUpdate()
{
foreach (Creature npc in Creature.list)
{
if(npc.ragdoll.isGrounded && npc.state == Creature.State.Dead)
{
npc.ragdoll.state = BS.Ragdoll.State.Dead;
npc.ragdoll.isGrounded = false;
}
}
POWTimer += Time.deltaTime;
}
}
还没有人评论,去客户端里说两句吧。
评论在新手盒子客户端中发表,这里同步展示。