Unity Cs玩家切换的操作

首先这里我们有俩个玩家,每一个玩家都有所对应的脚本以及操作,这里就需要用到对象数组去存储玩家(当然集合也可以使用,其方法大同小异),这里我用的是数组存储。

 private GameObject[] players;//玩家存放器

通过 GameObject.FindGameObjectsWithTag查询多个相同标签的对象

  players = GameObject.FindGameObjectsWithTag("Player");

为了方便知道对应玩家,这里给把玩家一一对应,避免出现找不到。
players[0] = GameObject.Find("Player1");
players[1] = GameObject.Find("G36C@Draw");

注:这里如果使用循环去依次查找玩家的话,用SetAction去隐藏其中一个玩家会出现下标异常的错误,因为隐藏玩家之后所对应的脚本,以及目标都会消失,无法获取。就相对于原本要查询俩个东西,一个东西突然消失找不到了,就异常了。

玩家的切换这里用到的是一个实时更新位置的一个操作,根据游戏的进行每帧进行调取玩家所对应的位置。通过查找Tag的方式取查找所对应的人的位置

player = GameObject.FindWithTag("Player").transform;

 void Update()
    {

        //每帧都调取更新玩家的位置
        player = GameObject.FindWithTag("Player").transform;

        if (feng >= 50)//当积分>50的时候开启切换玩家的功能
        {
            change = true;
            Changeplayer(change);//变换角色
        }
        //用于禁用玩家死后的脚本
        tt();

    }
 
    

tt()方法是用于禁用玩家的全部脚本,这里因为玩家有两位所以需要判定

 void tt()//角色死后脚本禁用
    {
        //玩家血量为空
        if (PlayerHp <= 0)
        {

            if (p1 != null)
            {
                //获取查找脚本,并关闭
                p1.GetComponent<PlayerACR>().enabled = false;
                p1.GetComponent<MouseLook>().enabled = false;
            }
            if (p2 != null)
            {
                p2.GetComponent<PlayerTwoG36C>().enabled = false;
                p2.GetComponent<MouseLook>().enabled = false;
            }
            //死亡UI
            PlayerDie.SetActive(true);
        }

 change = true;

Changeplayer(change);找到玩家并显示玩家,在原来玩家的位置上更新到另一个玩家

这里判断玩家是否存在,并给其所对应的操作。

 void Changeplayer(bool c)//换角色判断传入
    {
        if (c)
        {
    
        if (Input.GetKeyDown(KeyCode.Alpha1))//切换玩家2号
        {
                
                players[0].SetActive(false);//玩家1
                players[1].SetActive(true);//玩家2
                //players[0].GetComponent<PlayerACR>().enabled = false;
                //players[1].GetComponent<PlayerTwoG36C>().enabled = true;
                players[1].transform.position = player.position;
        }
        if (Input.GetKeyDown(KeyCode.Alpha2))//切换玩家1号
        {
                players[0].SetActive(true);
                players[1].SetActive(false);
                //players[0].GetComponent<PlayerACR>().enabled = true;
                //players[1].GetComponent<PlayerTwoG36C>().enabled = false;
                players[0].transform.position = player.position;
        }
    }

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Unity官方提供的人物控制脚本是指Unity软件自带的一种用来控制游戏角色移动、跳跃和互动等操作的脚本。该脚本是Unity中非常常用的一部分,可用于创建第一人称、第三人称和平台游戏等不同类型的角色控制。 人物控制脚本通常包含以下几个主要功能: 1. 移动控制:通过键盘、鼠标或手柄等输入设备来控制角色在场景中的移动方向和速度。可以使用轴向输入或力的方式来实现不同的移动效果。 2. 跳跃控制:通过按键等方式触发角色的跳跃行为,并控制跳跃高度和距离。可以使用重力、力和动画等方式来模拟真实的跳跃效果。 3. 互动控制:控制角色与场景中的物体进行交互,如开门、拾取物品等。可以通过射线检测、触发器和碰撞器等方式来实现角色与物体的交互逻辑。 4. 碰撞检测:检测角色与场景中的碰撞器发生碰撞,并触发相应的反应。可以用于检测角色与墙壁、敌人、障碍物等的碰撞情况,并处理相应的移动控制或伤害逻辑。 5. 动画控制:根据角色的移动状态和动作来控制角色的动画播放。可以根据不同的输入和碰撞状态来切换不同的动画状态,使角色呈现出逼真的动作表现。 Unity官方提供的人物控制脚本可以作为游戏开发的起点,开发者可以基于此脚本进行更加复杂的角色控制逻辑的构建。同时,Unity还提供了丰富的文档和教程,帮助开发者理解和使用各项功能,并能够根据实际需求进行个性化的定制。 ### 回答2: Unity官方人物控制脚本是一个用于控制游戏中角色移动的脚本。 首先,在Unity中,角色控制通常使用Character Controller组件,它负责处理角色的碰撞、重力和移动等方面的逻辑。 官方提供的人物控制脚本提供了一些常见的角色控制功能,比如角色的移动速度、跳跃高度、加速度等。通过在脚本中设置对应的参数,我们可以轻松地控制角色的行为。 该脚本还提供了一些内置的输入检测功能,比如检测玩家是否按下了键盘上的方向键、空格键等。通过这些输入检测的逻辑,可以实现角色的移动、跳跃等操作。 另外,官方人物控制脚本还包含了一些常见的动画过渡逻辑,比如角色的奔跑、行走、站立等动作。通过在脚本中设置对应的动画触发条件,可以让角色在不同的情况下播放不同的动画。 总之,Unity官方人物控制脚本提供了一个便捷的方式来控制游戏中的角色。通过简单的设置和调整,我们可以实现角色的基本移动、跳跃和动画播放等功能。在开发游戏时,使用官方提供的人物控制脚本可以大大减少我们的工作量,提高开发效率。 ### 回答3: Unity官方提供的人物控制脚本是一种基于脚本的解决方案,用于控制游戏中的角色行为。这个脚本包含了一系列函数和变量,可以用于实现角色的移动、跳跃、旋转等基本动作。 在Unity官方的人物控制脚本中,常见的变量包括速度变量、重力变量、角色控制器等。通过改变这些变量的数值,可以调整角色的移动速度、重力表现和碰撞检测等行为。 此外,Unity官方人物控制脚本还提供了一系列函数,用于响应玩家的输入,并更新角色的状态。例如,可以在Update函数中通过接收玩家输入的键盘或鼠标事件,实现角色的移动操作。另外,在FixedUpdate函数中可以使用角色控制器的Move函数进行碰撞检测和移动处理。 通过使用Unity官方提供的人物控制脚本,开发者可以方便地实现角色的基本操作,从而为游戏添加更丰富的交互性。同时,该脚本也提供了一些常用的功能和接口,如射线检测、跳跃力度控制等,方便开发者进一步扩展和定制角色的行为。 总之,Unity官方人物控制脚本是一种便捷的解决方案,用于实现角色的基本操作和行为。通过研究和使用这个脚本,开发者可以加快游戏开发速度,并为角色添加更多的交互性和动态性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值