年末大盛り上がり間違いなし!!!GrasshopperRouletteを作ろう!!!
どうも、qujenです。こちらはAEC and Related Tech Advent Calendar 2020の12/6の記事です
皆さんにも共通する悩むことだと思うのですが、複数人で集まるとGrasshopperで遊ぶことがありません。
もちろん各々もくもくと作業…それでもいいのですが、せっかく集まれた日。みんなでGrasshopperで遊びたいですよね。その気持ち、すごくわかります!!!
そこで今日はGrasshopperで遊べるゲームを作っていきましょう
今年書いた記事ですが、このキーリスナーのようなものを利用してルーレットを作ります。たまにはPythonを触ってあげましょうかね。Zennで書いてもよかったんですがふざけた記事なので辞めておきました。
コツは強い意志を持つことです。これは何の意味になるんだ、そんなことを考えてはいけません。
まずはルーレットの台を作ってあげます。めんどくさいので適当にRhinoで線引いて押し出すだけ。
読んでる人の中で気づく人がいるかもしれないので断っておくのですが、ISOカーブの構造上、この作り方は少し褒められたものではありません。しかし今回はこれで行きます。
RhinoViewPortがGH上に表示されているのが気になる?そんな方はこちらをどうぞ
TokyoAECIndustryDevGroupで行ったハンズオンです。今年は結構ハンズオンをやりました。他にやったハンズオンの詳細とかはこちらのチャンネルから。
少し脱線しましたが、ルーレットなので当然針を回す必要があります。Timerで回すとかでもいいんですが、せっかくのゲームなので受け取ったキーに対して回すプログラムを組んでみましょう。
因みにRhinoRacingGameを作った時の副産物でもあります。ある程度完成してますが鋭意製作中
from ghpythonlib.componentbase import executingcomponent as component
import Grasshopper, GhPython
import System
import Rhino
import rhinoscriptsyntax as rs
import math as ma
class MyComponent(component):
def __init__(self):
self.position = Rhino.Geometry.Point3d.Unset
self.direction = Rhino.Geometry.Vector3d.Unset
self.inertia = Rhino.Geometry.Vector3d.Unset
self.rotation = 0.0
def turn(self,dir=str()):
val = 0.03
if dir == 'start':
self.rotation += val
if dir == 'stop':
self.rotation = 0
def apply_forces(self):
self.direction.Rotate(self.rotation,Rhino.Geometry.Vector3d.ZAxis)
def RunScript(self, ON, Reset):
if Reset:
self.position = Rhino.Geometry.Point3d(0,0,0)
self.direction = Rhino.Geometry.Vector3d(0,1,0)
self.inertia = Rhino.Geometry.Vector3d(0,0,0)
self.rotation = 0
modifier = System.Windows.Forms.Control.ModifierKeys.ToString()
case1 = "Control"
case2 = "Alt"
if modifier == case1:
self.turn("start")
if modifier == case2:
self.turn("stop")
self.apply_forces()
A = self.position
B = self.direction
if ON:
ghenv.Component.ExpireSolution(True)
return (A, B)
本来であれば""System.Windows.Forms.Control.IsKeyLocked(System.Windows.Forms.Keys.NumLock"とかつけたほうがいい気もしますが、とりあえずこれで大丈夫です。あとはこのようにしてつなげます。
これでControlキーでスタート、Altキーでストップします。ピタッと止まるので、慣れてこれば目押しも可能です。
さて、各種当たり判定を付けていきましょう。こんな感じ。
いい感じです!!あとは当たった時にボタンを押すとそれが消えるようにしてあげます。
これで景品を入れてあげれば完成です。最終形はこんな感じ。
完成です!!!
うわ!!俺Octahedronがよかったよ!!おいおい、お前いきなりTetrahedronじゃん!などと盛り上がること間違いなしですね!!!
今回はそれほど難しいことをせずにRhinoでゲームを作ってみました。最初はすごろくの記事を書いていたのですが必要なものとコードが長すぎたのでそちらは次回、機会があれば紹介しようと思います。
このようにソフトウェアで遊ぶこと、意味を求めずにいじることはとても重要なことだと思います!皆さんもぜひ遊んでみましょう。
世界は広いものでこんなフォーラムも見つけました
自分で作ったゲームを持ち寄って、クリスマスに遊んでみるのも、楽しいかもしれませんね!
この記事が気に入ったらサポートをしてみませんか?