1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

HSPでサクッと一人称視点カメラを作る

Posted at

プログラミング初心者です、備忘録として書き記しておきます
プラグインはhgimg3

方針

カーソルをウィンドウ中央に固定し、ウィンドウ中央からのカーソル移動量をカメラ角度に加算・減算してあげる
image.png

注意点

mouse命令で設定する座標はディスプレイ上での座標なため、現在のウィンドウ位置、ウィンドウ枠の大きさを考慮して設定する必要がある

例)
image.png

コード

視点操作のみのサンプル
y方向の視点角度を制限してないのでマウスを上下に動かし続けるととバク転・前転のような視点に…

FirstPerson.hsp
#include "hgimg3.as"

hgini

;カメラ初期位置、初期角度
selpos : objset3 0,-6,0 
selcang : objset3r 0,0,0

;床作成
addmesh mdpl,32,32,16,512,512,2
regobj obpl,mdpl

;箱作成
setcolor 255,0,0
addbox mdbx,16,16
repeat 32
regobj obbx,mdbx
x=rnd(32) : z=rnd(32)
bx=x*16-(256-8) : bz=z*16-(256-8)
selpos obbx : objset3 bx,-6,bz
color
loop

;感度
sens=0.005

*main

    winposx=ginfo(4) : winposy=ginfo(5)  ;ウィンドウ左上位置
	winw=ginfo(12)  : winh=ginfo(11)     ;ウィンドウ横幅・縦幅(枠あり)
	winactw=ginfo(10) : winacth=ginfo(13);ウィンドウ横幅・縦幅(枠なし)
	
	zureh=(winactw-winw)/2 ;サイドの枠の厚さ
	zurev=(winh-winacth)-zureh ;上側のずれ

	centerx=winposx+zureh+(winactw/2) ;マウス中央位置=ウィンドウ左上位置+枠サイズ+ウィンドウ幅/2
	centery=winposy+zurev+(winacth/2)
	
	x=mousex : z=mousey 
	
	mdx=winactw/2-x : mdz=winacth/2-z ;カーソル移動量観測
	
	mouse centerx,centery ;カーソルを中央に固定
	
	selcang : objgetfv angle ;カメラ角度に反映

	angle(1)+=sens*mdx
	angle(0)+=sens*mdz
	
	objsetfv angle

hgdraw
hgsync 20
goto *main

その他

d3moduleを用いた一人称視点カメラの例:
http://hsp.tv/play/pforum.php?mode=pastwch&num=81890

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?