riru/宝石小箱 2024/03/31 13:59

2024年3月作業報告及び作業優先度

月末の作業内容振り返りです

<ドラクリ>
・マップ案考える
・ワールドにオブジェクト仮配置
・軽量化処理
・spline調整処理
・移動可能範囲設定

引き続きマップを考えているんですが、そもそも細かな地形とか配置とか決めてないな?と思ってマップの詳細を考えました


こーんな感じ。ドラゴンの配置はまた変わるかもですが

あと柵とかの配置にsplineというパスを使った配置法を使おうとしているのですが、特に地形に沿った高さにパスを合わせるのがくっそ面倒だったのでスクリプトで既存の制御点のY座標を設定するスクリプトを組みました。
よければ自由に使ってくださいな


using UnityEngine;
using UnityEngine.Splines;
public class TerrainSplineAdjuster : MonoBehaviour
{
[SerializeField] private SplineContainer _splineContainer;
[SerializeField]int terrain_height = 300;
[ContextMenu("Spline調整")]
public void AdjustSplineOnTerrain()
{
    foreach(Spline spline in _splineContainer.Splines){
        for (int i = 0; i < spline.Count; i++)
        {
			spline[i] = new BezierKnot(GetPositionOnTerrain(spline[i].Position));
        }
	}
    Debug.Log("Spline adjusted on terrain!");
}
Vector3 GetPositionOnTerrain(Vector3 position)
{
    // 地形の高さをサンプリングして、指定された位置に対応する高さを取得
    Terrain terrain = GetTerrainAtPosition(position+_splineContainer.transform.position);
    Vector3 ter_pos = terrain.transform.position;
    float posX = position.x+_splineContainer.transform.position.x;
    float posZ = position.z+_splineContainer.transform.position.z;
    Vector3 spawnPosition = new Vector3(posX, 0f, posZ);
    // Terrainの高さを取得
    float height = terrain.SampleHeight(spawnPosition);
    int terrainWidth = (int)terrain.terrainData.size.x;
    int terrainLength = (int)terrain.terrainData.size.z;
    return new Vector3(position.x, height-terrain_height, position.z);
}
Terrain GetTerrainAtPosition(Vector3 position)
{
    //Terrain[] terrains = Terrain.activeTerrains;
	Ray ray = new Ray(position+Vector3.up*1000, Vector3.up*-1);
    int distance = 10000;
    	RaycastHit[] _hits = new RaycastHit[100];
    int hits = Physics.RaycastNonAlloc(ray, _hits, distance);
    for (int k = 0; k < hits; k++)
    {
        if(_hits[k].collider.gameObject.CompareTag("Terrain")){
            return _hits[k].collider.gameObject.GetComponent<Terrain>();
        }
    }
    return null; // 対象の位置にTerrainが見つからなかった場合
}
}

それともスナップできる方法あるのかな…あるなら教えてください~~


<その他>
・スマホスペーサー3Dモデル作成

ポケモンスリープやってるんですけど、スマホケースが手帳型なので計測してるとき発熱がすごくてですね…
いいかんじに隙間を作れないかとスペーサーを3Dプリンターで作ってみました


こんなかんじのやーつ

久しぶりに3Dプリンター触ったのもあり調整などに苦戦したし途中でトラブったのか3分の2くらいしかできあがらなかったけど、まぁ支えられているのでよし。


今月は身内の不幸などいろいろ忙しい週もありました。が、新しい機能も覚えてきたしちょこっとずつでも進んでるんじゃないかな?

ついでに現在の作業優先度
(→の順に制作予定ないし左に行くほどモチベが高い時に優先的にやる)
制作優先度:ドラゴネス・クリスタル→クリコア→メガモノ3D→新likilia
気が向いたら:街づくり→みのぶつけ→のんぼく→R&R→パズル→あにまるだっしゅ!
もしかしたらやるかも:樹木物語→CALTESIA漫画→裏漫画→CALTESIA→フィギュア作り

※その他企画系等が高い方に入ってくる時もあるかも

実は作業用BGM代わりに街づくりゲームを別モニタでやってるんですが、なんだかんだ操作する場面も多いので、もう自分で全自動で住民たちが町づくりする様をながめるゲーム?シミュレーター?を作ってしまおうかと息抜きにちょこちょこ進めてたりしてます。
まだ住人が動くとこすらできてないけどね

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

記事のタグから探す

月別アーカイブ

限定特典から探す

記事を検索