この記事をご覧の皆様、こんにちは。 マーケティングの野崎です。
ゴールデンウィークが近くなってきました。
長期連休を取れている方はせっかく長い休みなので有意義に使っていきたいですね。
私は有給を取らない限りはカレンダー通りの休みなので、ゴールデンウィークは趣味に時間を費やしていきたいと思っています。
2回に分けてしまって申し訳ありませんが、前回の続きを書いていきます。
Rsensor
「センサーがBlockした時にモーターが回転してフタが開く」という仕組みです。まずはセンサーからモーターが参照できないと回転させることが出来ないのでプロパティに「TargetMotor」というVisualプロパティを作成しました。
作成後に黄色の球をドラッグしてRotationalMotor(ToolPlate)に繋げます。
センサーのOnBlockedイベントを新規で作成します。
「NewScript...」を選択することにより新しくスクリプトを作ることが出来ます。言語や名前は自由に選んで頂ければ構いません。私はJscriptを選択し名前をRSensorとしました。
function Sensor1_OnReset( sender : Demo3D.Visuals.BoxVisual )
{
}
function Sensor1_OnBlocked( sender : Demo3D.Visuals.PhysicsObject, load : Demo3D.Visuals.Visual )
{
sender.TargetMotor.IsMotorForwards = true;
sender.TargetMotor.TargetPosition = 60;
//run
sender.TargetMotor.IsMovingToTarget = true;
}
SenseMultipleLoadsというプロパティがもしTrueになっている場合はFalseに設定します。これはTrueの場合はBlock/Clearしたロード全てにOnBlocked/OnClearedが実行されます。今回は常に一つしかBlocked/ClearedしてほしくないのでFalseに設定してください。
ここまでくれば開く動作は問題無く動くと思います。次は閉じる動作について考えていきます。 分けた方が楽なので、閉じる動作は青いセンサーに手が触れたら閉じるようにしていきます。
BSensor
まず赤いセンサーをコピーして、分かり易いように色を青色に変更します。閉じる時のプロパティはIsMotorForwardsをFalseにして、TargetPositionを0にすることで動作します。
まず実装するために先ほどと同様の手順でスクリプトを作成します。私はJscriptのBSensorとしました。
そして今回のイベントはOnBlockedではなくOnMouseOverとなります。NewScriptで作成してください。
{
}
function Sensor2_OnMouseOver( sender : Demo3D.Visuals.BoxVisual, info : Demo3D.Visuals.PickInfo )
{
sender.TargetMotor.IsMotorForwards = false;
sender.TargetMotor.TargetPosition = 0;
//run
sender.TargetMotor.IsMovingToTarget = true;
}
これで実装出来ました。あとはモーターをレイヤーで隠したりオブジェクトを配置したりするだけです。
次回の火曜は「PCを変えずにスペックを向上させるお勧めできない方法」です。
コメントをお書きください