Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / data / BulletData.cs
@小李xl 小李xl on 20 Nov 2023 2 KB 修复第二个敌人攻击问题

using Config;
using Godot;

/// <summary>
/// 子弹数据
/// </summary>
public class BulletData : IClone<BulletData>
{
    /// <summary>
    /// 发射该子弹的武器, 可能为null
    /// </summary>
    public Weapon Weapon;
    
    /// <summary>
    /// 使用的配置数据
    /// </summary>
    public ExcelConfig.BulletBase BulletBase;
    
    /// <summary>
    /// 发射该子弹的角色, 可能为null
    /// </summary>
    public Role TriggerRole;
    
    /// <summary>
    /// 造成的伤害
    /// </summary>
    public int Harm;

    /// <summary>
    /// 击退值
    /// </summary>
    public float Repel;

    /// <summary>
    /// 最大飞行距离
    /// </summary>
    public float MaxDistance;

    /// <summary>
    /// 子弹飞行速度
    /// </summary>
    public float FlySpeed;

    /// <summary>
    /// 初始离地高度
    /// </summary>
    public float Altitude;
    
    /// <summary>
    /// 纵轴速度
    /// </summary>
    public float VerticalSpeed;
    
    /// <summary>
    /// 反弹次数
    /// </summary>
    public int BounceCount;

    /// <summary>
    /// 子弹最大穿透次数
    /// </summary>
    public int Penetration;

    /// <summary>
    /// 子弹最大存在时间
    /// </summary>
    public float LifeTime;

    /// <summary>
    /// 坐标
    /// </summary>
    public Vector2 Position;
    
    /// <summary>
    /// 旋转角度
    /// </summary>
    public float Rotation;
    
    public BulletData Clone()
    {
        return new BulletData
        {
            Weapon = Weapon,
            BulletBase = BulletBase,
            TriggerRole = TriggerRole,
            Harm = Harm,
            Repel = Repel,
            MaxDistance = MaxDistance,
            FlySpeed = FlySpeed,
            Altitude = Altitude,
            VerticalSpeed = VerticalSpeed,
            BounceCount = BounceCount,
            Penetration = Penetration,
            LifeTime = LifeTime,
            Position = Position,
            Rotation = Rotation
        };
    }
}