亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

區分敵人的射彈和用戶的射彈

區分敵人的射彈和用戶的射彈

C#
慕容3067478 2023-08-20 14:45:05
我有一個發射射彈來傷害敵人的用戶。盡管有些敵人擁有自己的射彈來傷害玩家。它們都來自相同的射彈腳本。問題是當用戶升級他的射彈(使用游戲內貨幣)時。用戶和敵人的射彈都會升級。由于它來自同一腳本,因此它會更新DamageOnHit射彈的 ?,F在我的問題是:我是否可以告訴我的腳本僅升級用戶的射彈,而不創建單獨的敵人射彈腳本?升級菜單代碼。正如您所看到的,我從射彈腳本升級了 DamageOnHit。這就是所有射彈受到更多傷害的方式。using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class UpgradeMenu : MonoBehaviour{    [SerializeField]    private Text accuracyText;    [SerializeField]    private Text speedText;    [SerializeField]    private Text damageText;  [SerializeField]  private Weapon weapon;  [SerializeField]  public Projectile projectile;  [SerializeField]  private Player player;  [SerializeField]  private int upgradeCost = 50;    void start ()    {    }    void OnEnable()    {        UpdateValues();    }    void UpdateValues ()    {    }    public void UpgradeArmor ()    {      Health.maxHealth += 2;    ScoreManager.Score -= upgradeCost;      UpdateValues();    }    public void UpgradeSouls ()    {      EnemySlime.ScoreOnDeath += 1;      EnemySkeleton.ScoreOnDeath += 1;    //  ScoreManager.Score -= upgradeCost;      UpdateValues();    }    public void UpgradeDamage ()    {      Projectile.DamageOnHit += 1;    //  ScoreManager.Score -= upgradeCost;      UpdateValues();    }}
查看完整描述

3 回答

?
當年話下

TA貢獻1890條經驗 獲得超9個贊

在您想要實現的目標中,您希望避免靜態字段。您應該能夠使用以下內容:


player.projectile = new  Projectile();

player.projectile.DamageOnHit = 5;


enemy.projectile = new  Projectile(); 

enemy.projectile.DamageOnHit = 1;

希望這可以幫助


查看完整回答
反對 回復 2023-08-20
?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

這是一個更好的解決方案,但它確實意味著您總共需要 3 個類。1 個基類保存標準射彈邏輯,另外 2 個類用于繼承射彈基類,用于玩家和敵方射彈。

還有一種不同的方法可以做到這一點。您可以在彈丸類中創建一個名為 ProjectileType 的枚舉,如下所示:


public Enum ProjectileType { PlayerProjectile, EnemyProjectile }

每當您創建/實例化射彈時,將此 ProjectileType 分配給projectileType 變量,如下所示:


private projectileType;


public Projectile(ProjectileType projectileType)

{

? ? this.projectileType = projectileType;

}

現在,每當您升級射彈時,您都可以檢查射彈是否屬于玩家類型,如下所示:


if(projectileType == ProjectileType.PlayerProjectile)

{

? ? // Upgrade logic.

}


查看完整回答
反對 回復 2023-08-20
?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

我不確定這是否是最好的解決方案,因為這完全取決于您的游戲邏輯,但您可以創建兩類射彈,一類用于敵人,一類用于玩家。這兩個類都可以繼承自您的 Projectile 類。

public class PlayerProjectil : Projectile {...}
public class AIProjectil : Projectile {...}

將 Projectile 類函數設為虛擬。當您需要不同的行為時,可以在 PlayerProjectil 和 AIProjectil 中覆蓋它們。


查看完整回答
反對 回復 2023-08-20
  • 3 回答
  • 0 關注
  • 150 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號