Chapter6付録

こちらは P242 「Chatacter Controller」と物理演算 のページです。

CharacterController?を設定したキャラクターは 独自の物理演算を行っており Unityの通常の物理演算が使えないので、他のオブジェクトを押したり押されたりといった行動が行えません。

これに対応する場合は、CharacterController?を使わず 変わりにRigidbodyとCapsuleCollider?、それとこのページに添付したPhysicsCharacterController?を使用します。

■実装手順

filePhysicCharacterController.js
すべて開くすべて閉じる
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 
 
 
 
 
 
 
 
 
-
|
!
 
 
-
|
|
-
|
!
!
 
 
 
-
|
|
-
|
|
!
!
 
 
-
|
|
|
|
|
|
|
-
|
|
!
!
#pragma strict
 
public var SpeedMax = 7.000;
var force = 8.000;
 
private var state = 0;
private var grounded = false;
 
function Awake ()
{ 
    rigidbody.freezeRotation = true;
}
 
function OnCollisionEnter ()
{
    state ++;
    if(state > 0)
    {
        grounded = true;
    }
}
 
 
function OnCollisionExit ()
{
    state --;
    if(state < 1)
    {
        grounded = false;
        state = 0;
    }
}
 
function FixedUpdate ()
{
    var horizontal = Input.GetAxis("Horizontal"); 
    var vertical = Input.GetAxis("Vertical"); 
 
    horizontal *= force;
    vertical *= force;
 
    if(rigidbody.velocity.magnitude < SpeedMax && grounded == true)
    {
        rigidbody.AddForce (transform.rotation * Vector3.forward * vertical);
        rigidbody.AddForce (transform.rotation * Vector3.right * horizontal);
    }
}

添付ファイル: filePhysicCharacterController.js 485件 [詳細]

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-07-22 (月) 11:38:38 (1792d)