利用Vuforia开发一个AR卡牌对战(二):主要代码实现

本文介绍了如何利用Vuforia开发AR卡牌对战游戏,涉及近战和远程角色的控制脚本,以及子弹追踪的实现。通过创建KnightCtrl和RemoteCtrl脚本,实现角色血量管理、移动、攻击等功能。同时,讲解了动态加载和销毁游戏对象的方法,以适应AR环境中目标的识别变化。文章提供了初步实现的测试场景截图。

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

Vuforia开发AR卡牌对战游戏(二):实现

接着上一篇,我们再继续实现我们的卡牌对战游戏,上一次忘记了将血条的样式改为水平的Filed样式

 

这里我们需要几个TagKnightAIRemoteAIKnightWeapenRemoteBullet,分别给到近战,远程,近战的武器,远程的子弹上。

由于我们有两个角色,一个远程一个近战,所以我们要写两个脚本。

首先写近战的脚本:KnightCtrl,先说一下大致思路:近战角色有血量,要获得自身血条的引用,自己在被子弹击中时会减血,还需要判断敌人是否死亡,敌人死亡需要嘲讽,自己是否死亡;需要每帧去获得远程敌人的引用(因为不知道啥时候会识别到敌人识别图,所以不能在Start中获得),到了一定的距离可以向着敌人移动,到了攻击范围就去攻击敌人。下面是主要代码和注释:

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

public class KnightCtrl : MonoBehaviour
{
    public float m_Life = 100f; //血量
    public float sightRange = 20f;  //视野范围,到了视野范围就向着对方移动
    public float attackRange = 2f;  //攻击范围
    public Image bloodImage; //血条
    public static float weaponDamage = 20f;  //自己的武器伤害值

    private Animator m_Animator;//动画机
    private bool enemyHasDie;   //敌人是否死亡

	// Use this for initialization
	void Start ()
    {
        m_Animator = this.GetComponent<Animator>();
        //待机
        m_Animator.SetBool("Run", false);
        m_Animator.SetBool("NextAttack", false);
        enemyHasDie = false;  
    }
	
	// Update is called once per frame
	void Update ()
    {
        GameObject remoteEnemy = GameObject.FindGameObjectWithTag("RemoteAI");

        if (remoteEnemy != null && !enemyHasDie && m_Life > 0f) //识别图加载出来后而且敌人没有死而且自己还活着
        {
            float dis = Vector3.Distance(this.transform.position, remoteEnemy.transform.p
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值