「プログラム」の編集履歴(バックアップ)一覧に戻る

プログラム - (2016/08/18 (木) 13:04:16) のソース

<ul><li>カラーコード一覧</li>
<li>メインプログラムの初期状態(スケルトン)</li>
<li>別スクリプトにある関数を実行(返り値なし)</li>
<li>別スクリプトにある関数の返り値ゲット</li>
<li>デバッグ常時表示</li>
<li>ランダム</li>
<li>スローモーション</li>
<li>別オブジェクトとの方向と距離</li>
<li>ゲームタイマー</li>
<li>オブジェクトを指定方向に向かせる</li>
<li>別オブジェクトの当たり判定を管理オブジェクト側で扱う</li>
</ul><hr /><ul><li>
<h2>カラーコード一覧</h2>
</li>
</ul><p><a href="http://www.tagindex.com/color/color_name.html">カラーネーム 147色</a><br />
16進数表記なのでちょっと変換するのがちょっと面倒だけどいちいち画面見ながら色指定するよりよっぽどマシ<br />
 </p>
<ul><li>
<h2><span style="line-height:20.8px;">メインプログラムの初期状態(スケルトン)</span></h2>
</li>
</ul><p><span style="line-height:20.8px;">​​​</span><span style="line-height:20.8px;">メインプログラム部分は毎回だいたい同じなので、コピペで始められるようにしとく<br />
(Unity5.3.2f1時点)</span><br /><br /><span style="line-height:1.6em;">#pragma strict</span><br /><span style="line-height:1.6em;">var GameTime : float = 0.0f;</span><br /><span style="line-height:1.6em;">private var DebugMode : int = 0;</span><br /><span style="line-height:1.6em;">static var GameStep : int = 0;</span></p>
<p>private var Player : GameObject;<br />
private var Enemy : GameObject;</p>
<p>private var PlAni : Animator;</p>
<p>var PlayerVoice1 : AudioClip;</p>
<p>private var MainCamera : Camera;</p>
<p>private var GameMessege : UI.Text;</p>
<p>private var UITextA1 : UI.Text;<br />
private var UIImageA1 : UI.Image;</p>
<p>private var BGMSource : AudioSource;<br />
private var SESource : AudioSource;</p>
<p>var DspButton : int = 0;</p>
<p><br />
function Button1(){<br />
    if(DspButton){<br />
        //PlAni.SetBool("a1", true);<br />
        //SESource.PlayOneShot(AtkVoice1, 1.0f);<br />
    }<br />
}    //print("Button1");</p>
<p>private function initValue(){<br />
    DebugMode = 1;<br />
    GameStep = 0;<br />
    if(DebugMode) GameStep = 0;<br />
        <br />
    //Player = GameObject.Find("player").gameObject;    <br />
    //PlAni = GameObject.Find("player").GetComponent(Animator);    </p>
<p>    //UITextA1 = GameObject.Find("Canvas/Text1").GetComponent(UI.Text);<br />
    //UIImageA1 = GameObject.Find("Canvas/Image1").GetComponent(UI.Image);</p>
<p>}</p>
<p>function Start(){<br />
    initValue();<br />
}</p>
<p>function Update(){<br />
    GameTime += Time.deltaTime;</p>
<p>    if(DebugMode){</p>
<p>    }<br />
    <br />
    if(GameStep == 0){<br />
    }<br />
    else if(GameStep == 1){<br />
    }<br />
    else if(GameStep == 2){<br />
    }<br />
    else if(GameStep == 3){<br />
    }<br />
    else if(GameStep == 4){<br />
    }<br />
    else if(GameStep == 5){<br />
    }<br />
    else if(GameStep == 6){<br />
    }<br />
    else if(GameStep == 7){<br />
    }<br />
    else if(GameStep == 8){<br />
    }<br />
    else if(GameStep == 9){<br />
    }<br />
    else if(GameStep == 10){<br />
    }<br />
    <br />
    <br />
    <br />
    <br />
}</p>
<p>function OnGUI(){</p>
<p>    if(DebugMode){<br />
        GUI.Button(Rect(Screen.width/2 - Screen.width/10*5, Screen.height/8*0,
Screen.width/20, Screen.height/20),GameStep.ToString());<br />
        GUI.Button(Rect(Screen.width/2 - Screen.width/10*4.5,
Screen.height/8*0, Screen.width/20*3,
Screen.height/20),GameTime.ToString());<br />
        GUI.Button(Rect(Screen.width/2 - Screen.width/10*3, Screen.height/8*0,
Screen.width/20*3, Screen.height/20),Time.frameCount.ToString());<br />
        if(GUI.Button(Rect(Screen.width/2 - Screen.width/10*5,
Screen.height/8*0.8, Screen.width/20*2, Screen.height/20), "Restart"))
Application.LoadLevel(0);<br />
    }</p>
<p>    if(GameStep == 0){<br />
    }<br />
    else if(GameStep == 1){<br />
    }<br />
    else if(GameStep == 2){<br />
    }<br />
    else if(GameStep == 3){<br />
    }<br />
    else if(GameStep == 4){<br />
    }<br />
    else if(GameStep == 5){<br />
    }<br />
    else if(GameStep == 6){<br />
    }<br />
    else if(GameStep == 7){<br />
    }<br />
    else if(GameStep == 8){<br />
    }<br />
    else if(GameStep == 9){<br />
    }<br />
    else if(GameStep == 10){<br />
    }</p>
<p><br />
}</p>
<p> </p>
<ul><li>
<h2>別スクリプトにある関数を実行(返り値なし)</h2>
</li>
</ul><p style="line-height:20.7999992370605px;">
ゲームオブジェクトNTManagerに登録してあるスクリプトのpublic関数Test2()を、<br />
ゲームオブジェクトShipに登録してあるスクリプトの中から呼び出す場合<br />
NTManagerスクリプト側<br /><span style="line-height:1.6em;">print("aaa");<br />
}</span><br /><span style="line-height:20.7999992370605px;">Ship</span><span style="line-height:20.7999992370605px;">スクリプト</span><span style="line-height:20.7999992370605px;">側</span><br /><span style="line-height:20.7999992370605px;">public var NTMan :
GameObject;</span><br /><span style="line-height:20.7999992370605px;">NTMan =
GameObject.Find("NTManager").gameObject;</span><br /><span style="line-height:20.7999992370605px;">からの<br />
N</span>TMan.SendMessage("Test2");</p>
<ul><li>
<h2>別スクリプトにある関数の返り値ゲット</h2>
</li>
</ul><p>ゲームオブジェクトNTManagerに登録してあるスクリプトのpublic関数Test()を、<br />
ゲームオブジェクトShipに登録してあるスクリプトの中から呼び出す場合<br />
NTManagerスクリプト側<br /><span style="line-height:1.6em;">public function Test(){</span><br /><span style="line-height:1.6em;">return(isMaster);</span><br /><span style="line-height:1.6em;">}</span></p>
<p>Ship<span style="line-height:20.7999992370605px;">スクリプト</span>側<br />
public var NTMan : GameObject;<br />
NTMan = GameObject.Find("NTManager").gameObject;<br />
からの<br />
print(NTMan.GetComponent(NTManager).Test());<br />
※いつものSendMessege()では返り値は返ってきませんという噂※</p>
<ul><li>
<h2>デバッグ常時表示</h2>
</li>
</ul><p>よく使う変数をいちいちDebug.Log();してらんないので常時画面に表示するようにする<br />
var gameStep : int = 0;<br />
var DebugMode : int = 0;<br />
function OnGUI() {<br />
    if(DebugMode){<br />
        GUI.Button(Rect(Screen.width/2 - Screen.width/10*5, Screen.height/8*0,
Screen.width/20, Screen.height/20),<span style="line-height:20.7999992370605px;">gameStep</span>.ToString());<br />
    }<br />
}</p>
<ul><li>
<h2>ランダム</h2>
</li>
</ul><p><span style="line-height:20.7999992370605px;">var r</span><span style="line-height:20.7999992370605px;">ndi : int = Random.Range(1, 10);</span><br />
int:最小以上、最大&lt;<strong>未満</strong>&gt;の値<br /><br /><span style="line-height:20.7999992370605px;">var r</span><span style="line-height:20.7999992370605px;">ndf : float = Random.Range(0.0f,
10.0f);</span><br style="line-height:20.7999992370605px;" />
float:最小以上、最大&lt;<strong>以下</strong>&gt;の値</p>
<ul><li>
<h2>スローモーション</h2>
</li>
</ul><p>参考:<a href="http://tsubakit1.hateblo.jp/entry/20140712/1405174180">Unityでスローモーション</a> <br />
Time.timeScale = 0.5f;<br />
オブジェクトのrigidbodyのInterpolateにチェックを入れるとスローモーションでもカクカクしない<br /><img alt="" src="//www63.atwiki.jp/katzmier/?cmd=upload&amp;act=open&amp;pageid=7&amp;file=t001.png" style="width:424px;height:205px;" /></p>
<ul><li>
<h2>別オブジェクトとの方向と距離</h2>
</li>
</ul><p><span style="line-height:20.7999992370605px;">方向(ベクトル)<br />
var distanceV : Vector3 </span>=
Skeleton.GetComponent(Rigidbody).transform.position -
Player.GetComponent(Rigidbody).transform.position;<br /><span style="line-height:20.7999992370605px;">方向(単位化)</span><br /><span style="line-height:20.7999992370605px;">var distanceVN : Vector3 =
distanceV</span><span style="line-height:20.7999992370605px;">.normalized;</span><span style="line-height:20.7999992370605px;"> </span><br /><span style="line-height:1.6em;">距離</span><br /><span style="line-height:1.6em;">var distance : float =
distanceV.sqrMagnitude; </span></p>
<ul><li>
<h2><span style="line-height:1.2em;">ゲームタイマー</span></h2>
</li>
</ul><p>ゲーム進行用タイマー(フレームレート込)<br />
var GameTime : float = 0.0f;<br />
GameTime += Time.deltaTime;<br />
フレームを取る場合は<br />
if((Time.frameCount % 120) == 0){<br /><span style="line-height:1.6em;">}<br />
とかなんとか</span></p>
<ul><li>
<h2>オブジェクトを指定方向に向かせる</h2>
</li>
</ul><p>ミサイルをプレイヤーに向かせ続けるとか(フレームまたがってじんわり変化する系)<br /><br />
var Player : GameObject;<br />
Player = GameObject.Find("Dimples").gameObject;    <br />
this.transform.rotation = Quaternion.Slerp(this.transform.rotation,
Quaternion.LookRotation(Player.transform.position - this.transform.position),
0.1f);    <br /><br />
※自分自身はthis.***<br /><img alt="" src="//www63.atwiki.jp/katzmier?cmd=upload&amp;act=open&amp;pageid=7&amp;file=001a.png" /><br /><br />
 </p>
<ul><li>
<h2>別オブジェクトの当たり判定を管理オブジェクト側で扱う</h2>
</li>
</ul><p>・(例)プレイヤーオブジェクト側で検知した当たりを親側に渡す</p>
<p>★プレイヤーオブジェクト側<br /><span style="line-height:1.6em;">var Master : GameObject;</span><br /><span style="line-height:1.6em;">function Start () {</span><br /><span style="line-height:1.6em;">    Master =
GameObject.Find("GameMaster").gameObject;←親のオブジェクトを取得</span><br /><span style="line-height:1.6em;">}</span><br /><span style="line-height:1.6em;">function OnCollisionEnter(collision :
Collision){ </span><br /><span style="line-height:1.6em;">   Master.gameObject.SendMessage("setDamage",
collision);←メッセージで親側にコリジョンごと渡す</span><br /><span style="line-height:1.6em;">    if(collision.gameObject.name ==
"Floor"){</span><br /><span style="line-height:1.6em;">        //Debug.Log("Hit the
floor");←プレイヤー側でなにかしたい場合</span><br /><span style="line-height:1.6em;">     }else if(collision.gameObject.name ==
"Wall"){<br />
        //Debug.Log("Hit the wall");</span><span style="line-height:20.7999992370605px;">←プレイヤー側でなにかしたい場合</span><br /><span style="line-height:1.6em;">    }</span><br /><span style="line-height:1.6em;">}<br />
★管理側</span><br /><span style="line-height:1.6em;">function setDamage(collision :
Collision){</span><br /><span style="line-height:1.6em;">   
print(collision.gameObject.name);</span><br /><span style="line-height:1.6em;">}</span><br />
 </p>