用Unity实现AR类炉石传说游戏——开发框架(一)

本文介绍了使用Unity开发AR游戏,尤其是以炉石传说为灵感的对战框架。内容涵盖了游戏流程、玩家类的详细设计,包括卡组、牌库、手牌、英雄和属性管理,以及卡牌、英雄和效果类的概念。同时,讨论了玩家与这些元素的交互,并提及了UML图作为设计辅助工具。
摘要由CSDN通过智能技术生成

游戏流程图

这里写图片描述


玩家类

每场对战中有两个玩家实例

每个玩家拥有:

  1. 卡组
  2. 牌库
  3. 手牌
  4. 场上的英雄
  5. 生命值,能量值等属性

卡组

vector作为容器存储

vector<Card> CardsCombination;

由玩家自行组合


牌库

使用栈来作为容器,在对局开始时,用洗乱的玩家卡组作为玩家的牌库

stack<Card> CardsStack;

玩家与牌库的交互:

  1. 每个玩家回合开始时,取出牌库顶端的若干张牌放入玩家的手牌中。
  2. 若玩家触发丢弃/获得手牌的效果,依据效果丢弃/获得手牌

手牌

因为需要频繁增删,使用List作为容器存储

List<Card> CardsInHand;

玩家与手牌交互:玩家使用卡牌,根据卡牌类型(效果牌、英雄牌)来决定使用方式

  1. 若是英雄牌:生成英雄实例,并push_back到玩家的Heroes容器中
  2. 若是效果牌:直接造成效果

场上的英雄:

同样地,频繁增删,使用List容器来存储玩家场上的英雄

List<Hero> Heroes(10);

这个容器应实现自动移位:如当前有5个英雄,分别存储在Heroes[0……4]中,英雄Heroes[2]阵亡后,3,4应自动前移;
这里写图片描述
场景中对应的变化是:
这里写图片描述
ps:数字表示英雄存在于场上的槽位,英雄死亡后,在容器中的位置处于死亡英雄后的那些英雄都应向左移一个槽位。此例中,皇子和盖伦都会向左走一个槽位(需要动画)


生命值,能量值等属性

int类型

注意对属性值的修改操作要使用一个public的函数,而不应该直接用运算符更改,并做保证不超过上限/下限的处理

能量

  1. 初始值为1
  2. 使用卡牌时消耗
  3. 通过卡牌效果获得能量

能量上限

  1. 初始值为1
  2. 每个回合增加一点上限
  3. 通过卡牌效果增加上限

生命值

  1. 初始值为30
  2. 受到敌方伤害时减少
  3. 通过卡牌效果增加或减少

玩家类总结

using System;
using System.Collections.Generic;

public class Player
{
    /// <summary>
    /// 当前生命值
    /// </summary>
    private int HP;

    /// <summary>
    /// 当前能量值
    /// </summary>
    private int MP;

    /// <summary>
    /// 最大生命值
    /// </summary>
    private int MaxHP;

    /// <summary>
    /// 最大能量值
    /// </summary>
    private int MaxMP;

    /// <summary>
    /// 卡组,由玩家在对局外自行组合
    /// </summary>
    private List<Card> CardsCombination;

    /// <summary>
    /// 牌库,对局开始时打乱卡组获得
    /// </summary>
    private Stack<Card> CardStack;

    /// <summary>
    /// 手牌,玩家从牌库中获得
    /// </summary>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值