unity开发炉石传说系列玩家手中卡牌出入及移动排列代码

本文介绍了一个基于Unity的游戏机制实现方案,通过该方案可以实现玩家获取和移除卡牌的功能,并保持卡牌在界面上的正确布局。利用NGUI和iTween插件实现了卡牌的动态生成和移动效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

//玩家手里卡牌的获得后的刷新和出牌后的刷新

public class Mycards : MonoBehaviour {

    public Transform card01;//意图表示第一张牌的位置

    public Transform card02;

    public GameObject cardsprefab;

    private float thedistance;//两张牌的距离

    private List<GameObject> cards = new List<GameObject>();

    void Start()
    {
        thedistance = card02.position.x - card01.position.x;//两张牌的距离

    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.S))
         {
             Getcard();
          }
        if (Input.GetKeyDown(KeyCode.W))
        {
            losecard();
        }
      }

    //获得卡牌即摸牌
    public void Getcard()
    {
        GameObject go = NGUITools.AddChild(this.gameObject, cardsprefab);//this .gameObject指的就是当前要把脚本的绑定到物体,把这个物体赋值给物体go

        Vector3 toposition = card01.position + new Vector3(thedistance, 0, 0) * cards.Count;//获得卡牌到达的位置,(现有牌数量的最后面,即与第一张牌的距离位置)

        iTween.MoveTo(go, toposition, 1f);//移动物体go到指定位置即toposition
        
        cards.Add(go);
    }
  
    //移除卡牌即出牌
    public void losecard()
    {
        int indexd = Random.Range(0, cards.Count);//随机打出手中某一张牌

        Destroy(cards[indexd]);

        cards.RemoveAt(indexd);

        for (int i = 0; i < cards.Count; i++)//移除后刷新手中所有牌的位置
        {
            Vector3 toposition = card01.position + new Vector3(thedistance, 0, 0) * i ;//第i张牌的位置(即与第一张牌的距离)

            iTween.MoveTo(cards[i], toposition, 0.5f);//刷新与第一张牌的距离(即刷新手中所有牌的位置)
        }
    }


}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值