射击时击退? Unity3D
Knockback when shooting ? Unity3D
我目前正在开发一款射击游戏,但找不到任何可以帮助我解决问题的东西。我想让我的角色在他射击时击退,而且当玩家使用不同的武器时击退应该不同所以他可以在射击时进行双跳 himself.For 例如当玩家使用武器 1 击退是 2 , 当 weapon2 然后 3.
感谢并抱歉提出这个简单的问题,但我正在开始学习。
马塞尔
你可以给每件武器一个击退或后坐力值(可能是一个浮点数)。然后,当在该武器上调用 Shoot 时,您可以在 Player 上调用 KnockBack(float amount) 方法。然后可以使用 Rigdigbody.AddForce() 向玩家向后方向施加力。
你的击退代码然后由玩家处理,每件武器保留它自己的击退量。如果您希望这样做,这应该能够执行诸如依赖于拾音器的乘数等操作。
我想代码看起来类似于下面。我没有测试过这段代码,只是在基本的文本编辑器中将其整理出来,因此复制和粘贴可能不起作用,但逻辑是存在的。你必须决定你希望如何 link 你的武器给你的玩家等等,但这不在问题的范围内。
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)
}
}
我目前正在开发一款射击游戏,但找不到任何可以帮助我解决问题的东西。我想让我的角色在他射击时击退,而且当玩家使用不同的武器时击退应该不同所以他可以在射击时进行双跳 himself.For 例如当玩家使用武器 1 击退是 2 , 当 weapon2 然后 3.
感谢并抱歉提出这个简单的问题,但我正在开始学习。
马塞尔
你可以给每件武器一个击退或后坐力值(可能是一个浮点数)。然后,当在该武器上调用 Shoot 时,您可以在 Player 上调用 KnockBack(float amount) 方法。然后可以使用 Rigdigbody.AddForce() 向玩家向后方向施加力。
你的击退代码然后由玩家处理,每件武器保留它自己的击退量。如果您希望这样做,这应该能够执行诸如依赖于拾音器的乘数等操作。
我想代码看起来类似于下面。我没有测试过这段代码,只是在基本的文本编辑器中将其整理出来,因此复制和粘贴可能不起作用,但逻辑是存在的。你必须决定你希望如何 link 你的武器给你的玩家等等,但这不在问题的范围内。
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)
}
}