ゲームに入ったときに、プレイヤーキャラ(アバター)を変更する方法です。

  1. ツールボックスから適当なNPCキャラを探します。
    「NPC」「humanoid」「Monster」等のキーワードで見つかります。
    Humanoidが含まれていないと使えません。
  2. そのモデルを展開し、Script、LocalScript、IntValue等を削除します。
  3. 親モデルの名前を「StarterCharacter」に変更します。
  4. そのモデルを「StarterPlayer」に移動します。

改造のされ方によっては正常に動作しないこともあります。

プログラムでの変更方法

モーフと呼ばれているキャラクターの変更をプログラムで行う方法です。
morphModel には、作成済みのキャラクターモデルを指定します。モデルは、WorkspaceやReplicatedStorageやServerStorageなどに入れて置きます。

local function morphCharacter(player, morphModel)
    local originalCharacter = player.Character
    local newCharacter = morphModel:Clone() -- モーフキャラクターを複製
    newCharacter.Name = player.Name
    -- プレイヤーのキャラクターを新しいキャラクターに置き換える
    player.Character = newCharacter

    -- 位置を元のキャラクターに合わせる
    local root = originalCharacter:WaitForChild("HumanoidRootPart")
    local newRoot = newCharacter:WaitForChild("HumanoidRootPart")
    newRoot.CFrame = root.CFrame
    newCharacter.Parent = workspace

    originalCharacter:Destroy() -- 元のキャラクターを削除
end

By schilverberch

ROBLOXでゲームを作ろう! 一緒にプログラミングを学びましょう。

14 thoughts on “キャラクター(アバター)の変更”
  1. コメント失礼します。車でぶつかったら吹っ飛んでいくような三角コーンなどのオブジェクトはどのようなプログラムを組めばよいのでしょうか。飛んで行ってしばらくしてから元の位置に配置されるようにもしたいです。

    1. 派手に飛ばすなら、次のような感じになると思います。
      コーンはメッシュで作成した1パーツがいいでしょう。アセットにあります。
      タッチイベントを使い、その中では次のようなことを行います。
      (1) コーンをClone()して保存しておきます。
      (2) Attachment と LinearVelocity を作ります。
      (3) VectorVelocity の Velocity には、触れたパーツのAssemblyLinearVelocityを活用します。少しだけ上向きの力を加えるのがいいでしょう。
      (4) wait()で少し待ち、(1)で作成したコーンのParentを設定し、画面に表示します。
      (5) 同時に、吹っ飛んだコーンも削除します。
      ※何度もタッチイベントが呼ばれるかも知れませんので、1度だけ実行するようにしてください。

      LinearVelocity を理解するには下記の動画がお勧めです。
      https://www.youtube.com/watch?v=u3oo1dW6UcE

  2. ありがとうございます。もう一つ質問があって、コアな話になってしまうんですけど、車のチューニングで変速機のギア比をプレイヤーが任意で変えられるようにしたいなと思っていろいろ試行錯誤をしているのですが、そもそも変速機のシステムをプログラムでどうやって表現すればいいのかわからないです。1速で走る→1速のエンジン回転数の限界に到達→次の段のシフトに上げないと速度が上がらない→2速に上げるというイメージで良いのでしょうか。ちなみにギア比を変えるとこのシフト1段で出せる最高速度を改変できるというイメージです。良ければこのシステムのプログラミングも考えていただければ幸いです。

    1. このようなものになりますと、ご自身で試行錯誤しながら組み上げていくことになります。
      プログラム的には、変数とIF文で成り立ちます。
      物事を1つ1つ論理的に考え、それをプログラムするだけです。
      ちなみに変速機のデータは、テーブルを使うのがベストだと思います。
      この辺りを学習し、スキルアップしていってください。
      またアセットのモデルに組み込まれたスクリプトも参考になるでしょう。

  3. コメント失礼します。自動車の外装色などに使われるメタリックやマットカラー、パールカラーなどの質感はどのように表現すればよいのでしょうか?これもプレイヤーが任意で色や質感を変更できるようにしたいです。

      1. 顔の画像は、プレイヤーモデルのHead内にあるfaceのTextureを変更すればOKです。
        後はテクスチャがありませんね。
        いずれにしましても、プレイして、エクスプローラー内のキャラクターモデルを確認すると構造が分かると思いますよ。

コメントを残す