導入
最新のアプリケーションでは、リアルタイムのロケーション追跡が多くのプロジェクトの中心的な部分になっています。たとえば、リアルタイムのポジショニング、ナビゲーション、マルチプレイヤーゲームなど。すべてこの機能に依存しています。この記事では、PHPとUnity3Dを段階的に段階的に紹介し、シーン内のリアルタイムの位置追跡機能を実現し、開発者がこのテクノロジーを理解して実装できるようにします。
前提条件の準備
開始する前に、次の準備を完了したことを確認してください。-** Unity3D **のインストール:Unity公式Webサイトにアクセスして、Unity3Dの最新バージョンをダウンロードしてインストールします。 - ** PHPとWorkermanのインストール**:サーバーにPHPをインストールし、作曲家を介してWorkermanフレームワークをインストールします。
実装プロセス
1. Unity3Dプロジェクトを作成します
まず、Unity3Dを開き、新しいプロジェクトを作成します。シーンに3Dモデルを追跡オブジェクトとして配置します。
2。unity3dスクリプトを書きます
「trackingscript.cs」という名前のUnity3dでC#スクリプトを作成し、次のコードを入力します。
UnityEngineの使用。
パブリッククラス追跡スクリプト:Monobehaviour
{
プライベートソケットソケット。
プライベートボイドスタート()
{
//サーバーに接続= new Socket(addressfamily.internetwork、sockettype.stream、protocoltype.tcp);
socket.connect( "server IPアドレス"、2345);
debug.log( "接続に普通に");
}
プライベートボイドアップデート()
{
//今の位置を得るvector3位置= transform.position;
//ソケット文字列メッセージ= position.x + "、" + position.y + "、" + position.zを間して位置情報をサーバーに送信します。
byte [] buffer = encoding.default.getBytes(message);
socket.send(バッファー);
}
private void ondestroy()
{
//ゲームのやっとに接続socket.close()を近いじます。
}
}
3.サーバー側のPHPファイルを作成します
サーバーに `tracking_server.php`という名前のphpファイルを作成し、次のコードを追加します。
require_once __dir__。 '/vendor/autoload.php';
Workerman \ Workerを使用してください。
$ worker = new Worker( "websocket://0.0.0.0:2345");
$ worker-> onmessage = function($ connection、$ data){
//位置情報を受信した戻る、接続されたすべてのクライアントにブロードキャストします($ connection-> worker-> connections as $ client_connection){
$ client_connection-> send($ data);
}
};
労働者:: ranall();
4.サーバーを起動します
コマンドラインから次のコマンドを実行して、サーバー側を開始します。
php tracking_server.php start
5。Unity3dでゲームを実行します
Unity3Dの[実行]ボタンをクリックすると、ゲームが開始されます。 3Dモデルが移動すると、位置情報がソケットを介してサーバーに送信されます。
6. Unity3Dシーンにスクリプトを追加します
`trackingscript.cs`スクリプトをunity3dシーンの空のオブジェクトに添付し、スクリプトに設定されたサーバーIPアドレスが正しいことを確認します。
7.リアルタイムの位置追跡
この時点で、Unity3Dの3Dモデルの位置をリアルタイムで追跡する機能を正常に実装しました。モデルが移動するたびに、位置情報はソケットを介してリアルタイムでPHPサーバーに送信され、サーバーはこの情報をすべての接続されたクライアントにブロードキャストします。
要約します
PHPのWorkermanフレームワークとUnity3Dを組み合わせることにより、シンプルなリアルタイム位置追跡機能を正常に実装しました。開発者は、リアルタイムマルチプレイヤーゲームで、場所の同期、ナビゲーション機能などを追加するなど、実際のニーズに応じて機能を拡張できます。この記事があなたを助けることを願っています。