音無サノトの空想録

ゆるい漫画を描いています

【ゲーム制作】2020.06.07 進捗(ボール転がしゲームの土台作り)

どうも音無サノトです。

今日もゲーム制作の続きをやっていきます。

 

今日の成果

  •  Playerをボールに変更
  • カメラ追従処理の追加
  • アイテムを取得できるように変更

 

作業ログ

今日はボールを転がしてアイテムを取得できるようにしていきます。

 

まずはボールを転がす処理。

以前に開発したボール転がしゲームの処理を応用してジョイスティックに対応するようにスクリプトを変更します。

www.otonasisanoto.com

 

Playerの処理を以下のように変更。 

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

public class PlayreController : MonoBehaviour
{
    public FixedJoystick joystick;
    public float speed;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    // Update()はフレーム毎の処理
    // FixedUpadete()は一定時間毎の処理
    // 物理挙動を使用する場合はFixedUpadete()を使用
    void FixedUpdate()
    {
        // Playerを物理挙動を使用して動かす
        float moveHorizontal = joystick.Horizontal;
        float moveVertical = joystick.Vertical;

        Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);

        rb.AddForce(movement * speed);
    }
}

 

こんな感じで動きます。

 

次はカメラをPlayerに追従するように処理を追加します。

まずはメインカメラに以下の処理を追加。

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

public class CameraController : MonoBehaviour
{
    
    public GameObject player;
    private Vector3 offset;

    void Start()
    {
        // メインカメラとPlayerの相対距離を算出
        offset = transform.position - player.transform.position;
    }

    void Update()
    {
        transform.position = player.transform.position + offset;
    }
}

 

こんな感じにPlayerの動作に合わせてカメラも動きます。

 

続きましてアイテム取得の処理を追加します。

ここも以前、制作したゲームの処理を流用します。

www.otonasisanoto.com

 

以下の処理をPlayerに追加します。

    // オブジェクト衝突時の処理
    void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.CompareTag("Point"))
        {
            other.gameObject.SetActive(false);
        }
    }

 

後はPointというタグのプレハブを制作してシーンに追加。

※Is Triggerにチェックを入れることを忘れずに

ついでにボールが落ちないように壁も作っておきました。

 

実行結果はこちら。

 

 

今回はここまでを実機で動作確認して終わりです。

 

本日は以上です。最後まで読んでいただきありがとうございました!