我目前正在拍摄射手,我找不到任何可以帮助我解决问题的事情。我想让他的角色在他射击时回击,但是当玩家使用不同的武器时,回击应该是不同的,所以他在自己射击时可以做双跳。例如当玩家使用武器1时,击退是2,当武器2然后3。
感谢并抱歉这个简单的问题,但我开始学习。
马塞尔
答案 0 :(得分:2)
你可以给每个武器一个击退或后坐值(可能是浮动)。然后当在该武器上调用射击时,你可以在你的玩家上调用KnockBack(浮动量)方法。然后可以使用Rigdigbody.AddForce()在播放器的向后方向向玩家添加力。
你的击退代码然后由玩家处理,每个武器保留它自己的击退金额。如果您希望这样做,这应该能够做出依赖于拾取器的乘数等事情。
我想代码看起来类似于下面的内容。我没有测试过这段代码,只是在一个基本的文本编辑器中将其掀起,所以复制和粘贴可能无法正常工作,但逻辑就在那里。您必须决定如何将武器与玩家联系起来,但这不在问题范围之内。
Weapon.cs
using System.Collections;
public class Weapon
{
private int damage;
private float knockbackAmount;
private Player ownerPlayer;
public Weapon(Player ownerPlayer)
{
damage = 5;
knockback = 5.0f;
this.ownerPlayer = ownerPlayer;
}
public void Shoot()
{
// do the shooting
ownerPlayer.Knockback(knockbackAmount);
}
}
Player.cs
using UnityEngine;
using System.Collections;
public class Player : MonoBehaviour
{
private int health;
public Player()
{
health = 100;
}
public void Knockback(float amount)
{
gameObject.rigidbody.AddForce(Vector3.back * amount)
}
}