HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0407
aroeIF条件でのモデルの回転制限の方法について5解決


aroe

リンク

2020/4/7(Tue) 12:25:26|NO.89990

#include "hgimg3.as"
screen 0,320,240
hgini

setcolor 255,0,255
addbox model,10,10
regobj obj,model

*main
getkey xKey,'X'
getkey yKey,'Y'
getkey zKey,'Z'

if xKey : addang obj, 0.1, 0.0, 0.0
if yKey : addang obj, 0.0, 0.1, 0.0
if zKey : addang obj, 0.0, 0.0, 0.1

if (xKey|yKey|zKey)=0 : setang obj, 0.0, 0.0, 0.0

hgdraw
hgsync 20
goto *main

このプログラムでボックスの回転に制限をかけてここまでは回らないというのを再現したいのですが
IF文をどうやって書いていいのかが分からないです。
どうすればいいのか教えていただけないでしょうか?



この記事に返信する


あらや

リンク

2020/4/7(Tue) 13:00:13|NO.89991

getangで各角度を取得して制限をかければいいだけかと。

例:

// 〜省略〜 *main getkey xKey,'X' getkey yKey,'Y' getkey zKey,'Z' getang obj, angx, angy, angx; if(xKey) && (angx < 1.0) : addang obj, 0.1, 0.0, 0.0; xが1.0までは回転可能 // 〜省略〜



aroe

リンク

2020/4/7(Tue) 13:21:04|NO.89992

すみません説明がややこしくてすみません

回転が0から1.0〜-1.0の範囲までで回転に制限がかけられれば良い感じですかね



あらや

リンク

2020/4/7(Tue) 14:23:07|NO.89993

キーを押していない状態を無回転(0.0)とするのならば
キーを増やさないといけないのではないでしょうか。

例えば
Xキーを押すと回転角度を+0.1
Sキーを押すと回転角度を-0.1
といった具合にすれば可能だと思います。



もしも仮に1.0まで行ったらいきなり-1.0に飛ぶような動きの場合ならば

getang obj, angx, angy, angx; if xKey { if( angx > 1.0 ) { setang obj, -1.0, 0.0, 0.0; } addang obj, 0.1, 0.0, 0.0; }
こんな感じにするとキーを増やさなくても可能です。



あらや

リンク

2020/4/7(Tue) 20:44:03|NO.90000

>getang obj, angx, angy, angx;
Zの箇所をXと打ち間違えていました。申し訳ありません。

あとから思いついたのですが、
もしかして振り子運動的な動きでしょうか?

#include "hgimg3.as" screen 0,320,240 hgini setcolor 255,0,255 addbox model,10,10 regobj obj,model addx = 0.1; addy = 0.1; addz = 0.1; *main getkey xKey,'X' getkey yKey,'Y' getkey zKey,'Z' getang obj, angx, angy, angz; if( (angx > 1.0) || (-1.0 > angx) ) : addx = -addx; if( (angy > 1.0) || (-1.0 > angy) ) : addy = -addy; if( (angz > 1.0) || (-1.0 > angz) ) : addz = -addz; if xKey : addang obj, addx, 0.0, 0.0 if yKey : addang obj, 0.0, addy, 0.0 if zKey : addang obj, 0.0, 0.0, addz if (xKey|yKey|zKey)=0 : setang obj, 0.0, 0.0, 0.0 hgdraw hgsync 20 goto *main



aroe

リンク

2020/4/10(Fri) 20:49:31|NO.90049

そうです振り子のような動きを探していましたおかげさまで解決しました
プログラミング頑張ります



ONION software Copyright 1997-2021(c) All rights reserved.