项目实训----Unity多人游戏开发----第六篇

综述

在游戏奇幻跳跃游戏中,我们主要对于unity的动画系统以及人物控制系统进行了讲解,下面主要对于其他的我们对该游戏的扩展进行一些讲述。

内容

首先,我们讲解的是平台。在这个奇迹跳跃中,我们主要采用了5中不同的平台以及导弹和摆锤等的危险因素来丰富游戏的趣味和玩法。以下主要讲解这些平台以及作用。所有的平台以及炮弹都是随着时间不断上移,最后达到一定高度就会销毁。

//平台有多种,都需要执行这个移动代码
void Update()
    {
    
    
        MovePlatform();
    }

    //移动板子
    void MovePlatform()
    {
    
    
        transform.position += movement * Time.deltaTime;

        if (transform.position.y >= topLine.transform.position.y)//超过了TopLine的高度就摧毁、毕竟超出屏幕不影响游戏了、物体积攒起来会变卡所以摧毁
        {
    
    
            Destroy(gameObject);
        }

    }

另外有一个平台生成器,控制平台的生成,以及增加平台的危险因数

 public void SpwanPlatform()//计时方法、一定时间生成一个平台,没有到特定时间则仅仅积累时间不生成平台
    {
    
    
        countTime += Time.deltaTime;
        countTime2 += Time.deltaTime;
        spawnPosition = transform.position;//获取我自己的位置作为生成板子的位置、是这个脚本挂在了“startLine”物体身上,我/this=StartLine
        spawnPosition.x = Random.Range(-3.5f, 3.5f);//水平位置要随机一下
        if (countTime >= spwanTime)//到了时间就生成一个平台
        {
    
    
            CreatePlatform();
            countTime = 0;//置0
        }
        if (countTime2 >= spwanTime+1)
        {
    
    
            CreateMenacePlatform();
            countTime2 = 0;
        }
    }

 if(platNum == 0)//two platforms
        {
    
    
            int index2 = Random.Range(0, platforms.Count);
            if(System.Math.Abs(spawnPosition.x)>=1.5f)
                Instantiate(platforms[index2], new Vector3(-spawnPosition.x,spawnPosition.y), Quaternion.identity);
            else
                Instantiate(platforms[index2], new Vector3(spawnPosition.x-1.5f, spawnPosition.y-1), Quaternion.identity);
        }

普通平台

首先我们要讲述的就是普通平台,也是最为简单的基础平台,该平台主要提供给玩家站立的作用,没有特殊的效果。
在这里插入图片描述

暂时平台

该平台主要是提供一个暂时的停留,当踩到以后只会存在3秒钟,以后就会碎掉,不再存在。
在这里插入图片描述

AudioSource breakAudioSource;
    public AudioClip breakClip;
    float countTime = 0, endTime = 1;
    bool start = false;//控制是否需要计时
    void Update()
    {
    
    
        if(start)
        {
    
    
            countTime += Time.deltaTime;
        }
        if(countTime>=endTime+1)
        {
    
    
            Destroy(gameObject);
        }
        if (countTime >= endTime)
        {
    
    
            transform.position = new Vector3(0, -20);
        }
    }

    public void OnCollisionEnter2D(Collision2D collision)
    {
    
    
    //一旦进行了玩家触碰,就需要倒计时进行销毁。并且进行音效触发。
        if (collision.collider.gameObject.tag.Equals("Player"))
        {
    
    
            breakAudioSource = GetComponent<AudioSource>();
            breakAudioSource.clip = breakClip;
            breakAudioSource.PlayDelayed(1);
            start = true;
        }
    }

风扇平台

该平台有两个效果,第一个就是对于玩家触碰到该平台会有一个弹起的效果,需要慎重考虑是否踩踏,因为如果玩家高度达到最高,会碰到最上面的尖刺,导致死亡。另外一个就是当玩家触碰以后,就会使得风扇自动旋转,执行旋转动画。

 private void OnCollisionEnter2D(Collision2D other)
    {
    
    
//执行旋转动画
        if (other.collider.gameObject.tag.Equals("Player"))
        {
    
    
            animator.Play("Fan_run");
        }
    }

玩家飞跃,触碰风扇平台,导致玩家跳跃。

 private void OnCollisionEnter2D(Collision2D other)//碰撞检测
    {
    
    
        if (other.gameObject.CompareTag("Fan"))//如果和一个标签为“Fan”的平台碰撞了,那玩家保持原有水平方向的速度的同时获得一个向上的10float的速度。
        {
    
    
            rb.velocity = new Vector2(rb.velocity.x, 10f);
        }
	}

总结

本次主要讲述了平台生成器以及三种简单的平台效果,玩家触碰后造成的影响,下次讲述剩余的平台。

猜你喜欢

转载自blog.csdn.net/qq_53259920/article/details/125135995
今日推荐