プロジェクト トレーニング -- Unity マルチプレイヤー ゲーム開発 -- パート 7

ゲーム ファンタジー ジャンプ プラットフォーム 2

レビュー

前回はプラットフォームのコントロールマネージャと基本的な3種類のプラットフォームについて説明しましたが、その他のプラットフォームについても以下で紹介します。

コンテンツ

ミサイル

ミサイルは主に警告線を通過し、プレイヤーにミサイルの存在を知らせた後、水平方向にミサイルを発射し、プレイヤーに触れると死亡するほか、プレイヤーへの警告効果もある。
ここに画像の説明を挿入
警告標識は
ここに画像の説明を挿入
主に次のコードを使用してミサイルを識別します。

ミサイルの位置と方向を決定する

//导弹方向、位置
        direction = Random.Range(0, 2);
        transform.localScale = new Vector3(-1, transform.localScale.y);
        if (direction == 0)//0代表向左
        {
    
    
            //spriteRenderer = GetComponent<SpriteRenderer>();
            //spriteRenderer.flipX = true;//反向
            transform.localScale = new Vector3(1, transform.localScale.y);
            direction = -1;
        }

警告線と場所のヒントを表示する

 height = Random.Range(-6f, 5f);
        transform.position = new Vector2(-5.5f * direction, height);

        //显示位置提示
        sprite = Instantiate(warningSprite, new Vector3(-4.2f * direction, height), Quaternion.identity);
        AudioSource spriteSource = sprite.GetComponent<AudioSource>();
        spriteSource.Play();
        //显示警告线
        line = Instantiate(warningLine, new Vector3(0, height), Quaternion.identity);

ミサイル飛行

countTime += Time.deltaTime;
        //计时之后fly并飞行,2秒前显示,3秒发射,5秒摧毁
        if (countTime >= 4)
        {
    
    
            Destroy(gameObject);
        }
        else if (countTime >= 3)
        {
    
    
            //根据direction发生位移
            transform.position += new Vector3(direction * speed * Time.deltaTime, 0);//y相对相机保持静止
        }
        else if (countTime >= 2)
        {
    
    
            Destroy(sprite);
            Destroy(line);
        }
        else
        {
    
    
            sprite.transform.localScale = new Vector3(Mathf.Abs(1 - countTime) * 0.1f + 0.1f, Mathf.Abs(1 - countTime) * 0.1f + 0.1f, 0);
        }

振り子

振り子
スイング効果を実現するには、
ボールをターゲットに追従するように設定し、このターゲットの周りを角速度でスイングする必要があります。
ここに画像の説明を挿入
図に示すファイルに、このジョイント コンポーネントを追加し、ターゲットを設定してから、スイング。

コンポーネントを取得し、位置情報を設定すればスイングエフェクトが完成します。

 LineRenderer line;
	void Start()
    {
    
    
        line = GetComponent<LineRenderer>();
    }

    void Update()
    {
    
    
        line.SetPosition(0, startPoint.position);
        line.SetPosition(1, endPoint.position);
    }

ゲームコントロール

開始時間を設定し、ゲームのタイミングによってランキング効果を実現します。マルチプレイヤー ゲームに関与していますが、ここではあまり紹介できません。

/在每次场景加载时候就开始计时间
        timeScore.text = Time.timeSinceLevelLoad.ToString("00");

要約する

このコンテンツでは、主にファンタジー ジャンプの 2 つの危険因子 (プレイヤーの衝突によって死亡エフェクトがトリガーされる) を共有し、具体的にコードを通じてその実装ロジックを示します。

おすすめ

転載: blog.csdn.net/qq_53259920/article/details/125137358