2018年5月29日火曜日

ぜんぜんそれ「いいね」じゃないが?の話。

「いいね」なんだのとSNSに+1つける機能あるけど、あれってただの既読提示でしかなくなってる人もいるんだよね。

で、これの一番の問題は、押せるのが一個しかない事。
いいねと思わなくても知り合いのだから押してる奴いるっしょ。

でも、ここに「見ました」とか「読みました」ってボタンあったら? ちゃんとそれ押すよね。ただ「いいね」が欲しい人もおるんよ。

じゃあ、どうするか。steamでゲームに関してタグをユーザーが付けれるんだけど、それと同じように各投稿には、

 閲覧者のタグ付けを許可するかのオン/オフ
 閲覧者がタグへの+1を許可するかのオン/オフ
 
 投稿者が投稿へのタグの追加
 投稿者が投稿へのタグの削除

の機能をつける。これで「見ました」タグを作ればいいし、その投稿を気に入った人がどう気に入ったのか、そしてそれにどれだけの人が共感したかを表示出来る様になるわけ。
情報量が増えてしまう問題はあるけど、技術的に付けれないような物でもないから可能だと思うんだよね。

検索タグに関しては投稿内に#stringsの形で入れればいいし、今回の案のタグで同じタグの付いてる投稿を見れてもいいかな。

という事で最近多く見かける既読提示の+1が正直うざくなってるので、機能でよくならんかなーと思ってます。

2018年5月8日火曜日

[ゲーム:セカンドライフ]フロントタイヤの旋回時のうねりの解消について

SLの四輪等の車は旋回時にフロントタイヤの向きが変わるギミックが仕込んであるわけですが、その際にハンドルを逆に切るとタイヤがうねって取れそうな感じの挙動になる事があります。

タイヤを速度によってllTargetOmegaで回転させ、llSetRot(実際はllSetLinkPrimitiveParamsFastを使ってると思います)で旋回させている車が大半なわけですが、左右に軸が反転する事でTargetOmegaの回転角度がおかしくなるからだと思うのですが、大半のメーカーではこのままになっており対策はされていません。

対策しないのは、まずボディーに隠れてタイヤが運転手からほぼ見えないので気にならないからと、対策取るだけのスクリプターが居ないからだと思います。現状の車屋さんの多くはDTやらACRやらなにやらの商材を突っ込んで、あとは性能差を出すための数値調整くらいしかやらないので。



さて、そこでは対策です。
フロントタイヤの処理としては、通常状態でのまっすぐ、A入力によって左向き、D入力によって右向きの3状態になり、あとは車体の速度を拾ってTargeOmegaで回転させていると思います。


まず、タイヤの状態を保持する変数を用意します。

 integer TireAngle = 0;
 //左向きなら-1、右向きなら1、まっすぐなら0

といった具合です。


次に旋回処理ですが、

 if(A入力){
  車体を左旋回;
  タイヤを左向きに;
 }else if(D入力){
  車体を右旋回;
  タイヤを右向きに;
 }else{
  車体の旋回をしない;
  タイヤをまっすぐに;
 }

といった感じにしてあると思います。そこでこの処理を

 if(A入力){
  車体を左旋回;
  if(TireAngle==1){
   タイヤをまっすぐに;
   TireAngle==0;
  }else{
   タイヤを左向きに;
   TireAngle==-1;
  }
 }else if(D入力){
  車体を右旋回;
  if(TireAngle==-1){
   タイヤをまっすぐに;
   TireAngle==0;
  }else{
   タイヤを右向きに;
   TireAngle==1;
  }
 }else{
  車体の旋回をしない;
  タイヤをまっすぐに;
  TireAngle==0;
 }

といった感じに変えます。これで既にタイヤが逆になっている場合に、一回まっすぐにしてから逆に向きを変えるになります。つまり軸をまたいでの旋回を行わないようにします。

これによりタイヤの向きの変更がワンテンポ遅れる事にはなるのですが、何度も何度も逆にハンドを切るなんて事も少ないでしょうし、そういう場合にタイヤがバタバタしてもしょうがないしね。



うちの場合はタイヤが60~-60の範囲で旋回するようにしてるとか、メーカーによってはカウンターを当ててる演出で入力とタイヤの向きが逆になるギミックがあったりだのすると思いますが、それがやれるなら、これみてどう変えればいいかも分かると思います。



これで走行時の見た目が少しは良い感じになるんじゃないかなーと思います。


#secondlife #セカンドライフ