2014年06月08日

ドアの開閉 (Unity C#)

 自分用の覚え書きです。

 今までドアの開閉はなしでやってましたが(Colliderを削除してました)、ドアの開閉ぐらい何とかなるだろうとやってみました。が、以外と難しく四苦八苦。アニメーションにしようと思ったのですがどうもうまく行きませんでした。
 結局、自己流のスクリプトで強引にやりました。

<ドア開閉システムを作る>
 1.Cubeでドアを作り(Collider削除)、それをEmptyObjectの入れ子にする。
 2.CenterをPivotにチェンジして、ドアの端に回転軸が来るように調整
 3.Box Colliderをくっつけ、Is Triggerにチェック。Box Colliderは少し大きめ。
 4.ドア開閉するスクリプトをくっつける。ドア回転スピード50。
1doormakingdesu.jpg

<スクリプト>

using UnityEngine;
using System.Collections;

public class DoorController : MonoBehaviour {
public float openSpeed; //ドアオープンスピード
private bool doorOpen; //ドアチェック
private float yDegree; //ドア回転角

void Start()
{
  doorOpen = false;
  yDegree = 0.0F;
}
void Update()
{
  if (doorOpen)
  {
    if (yDegree<90.0F)
    {
      yDegree += openSpeed * Time.deltaTime;
      transform.Rotate (0,openSpeed * Time.deltaTime,0);
    }
  }
  else
  {
    if (yDegree> 0.0F)
    {
      yDegree -= openSpeed * Time.deltaTime;
      transform.Rotate (0,-openSpeed * Time.deltaTime,0);
    }
  }
}

void OnTriggerEnter(Collider other)
{
  doorOpen =true;
}
void OnTriggerExit(Collider other)
{
  doorOpen = false;
}
}

 上のやり方の欠点は、プレイヤーの位置によって少し変な動き(開閉を繰り返す)をする場合がありますが、Colliderを大きめにしておくとほぼ問題なく動作しました。
-----------------
 <ご注意>私自身が全くの超初心者ですので、文中まちがいがあるかも知れません。その際はご容赦をお願いします。<(_ _)>
ラベル:Unity3d
posted by Shindo Izo at 17:35| Comment(2) | Unity3D マイマニュアル | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。