前回のスクリプトにて
elif ev == 'catch':
obj.ResetEvent(di['timerEID'])
di['distance'] = 0
di['train'] = obj.GetTrain()
di['timerEID'] = obj.SetEventTimer(1,100)
のResetEventは次の列車が信号機の遷移中に突入してきた時の為だったのですが、ここに次の列車用のSetEventTimerを置くとイベントが発生できないことが分かりましたので、SetEventAfterで0.1秒遅らせることにしました。
#OBJID=38
import vrmapi
def vrmevent_38(obj,ev,param):
di = obj.GetDict()
if ev == 'init':
di['signal36'] = vrmapi.LAYOUT().GetSignal(36)
di['signal36'].SetStat(0,6)
di['train'] = 0
di['timerEID'] = 0
di['distance'] = 0
elif ev == 'broadcast':
dummy = 1
elif ev == 'timer':
if param['eventUID'] == 100:
speed = di['train'].GetSpeed()
di['distance'] = di['distance'] + 1.85185 * speed
if di['distance'] > 2500:
di['signal36'].SetStat(0,6)
obj.ResetEvent(di['timerEID'])
di['distance'] = 0
elif di['distance'] > 2000:
di['signal36'].SetStat(0,4)
elif di['distance'] > 1500:
di['signal36'].SetStat(0,3)
elif di['distance'] > 1000:
di['signal36'].SetStat(0,2)
elif di['distance'] > 0:
di['signal36'].SetStat(0,1)
elif ev == 'time':
dummy = 1
elif ev == 'after':
if param['eventUID'] == 101:
di['timerEID'] = obj.SetEventTimer(1,100)
elif ev == 'frame':
dummy = 1
elif ev == 'catch':
obj.ResetEvent(di['timerEID'])
di['distance'] = 0
di['train'] = obj.GetTrain()
obj.SetEventAfter(0.1,101)
こちらをお使いください。
コメント一覧
最新の画像もっと見る
最近の「Pythonスクリプト」カテゴリーもっと見る
最近の記事
カテゴリー
- 重要記事(18)
- HDR写真(91)
- VRM-NX(257)
- NX-TOMIX(122)
- VRM入門(82)
- VRM動画(78)
- VRM自動センサー(10)
- 天球テクスチャー(62)
- 編成(115)
- Pythonスクリプト(93)
- VRMoNLINE(25)
- VRMノンジャンル(187)
- VRMの日(22)
- 鉄道模型レイアウター(28)
- Trainz(183)
- A9(10)
- 鉄道模型(111)
- VRM4CV(69)
- cVss(20)
- VRM-Nietzsche(28)
- めっけ(8)
- 無理矢理ストラクチャ(29)
- VRM4GIS計画(仮)(12)
- VRM用技術(25)
- VRMスクリプト(21)
- 参考写真・参考書籍(28)
- 2D/3DCG(110)
- サウンド(5)
- 単なる雑談(79)
- ノンジャンル(9)
- 双極性障害(2)
- 生活(2)
- グルメ(0)
バックナンバー
2017年
人気記事