Unity에서 메시 정점 새로 고침
부팅
한 유닛 1week이라는 장르의 여름 느낌 나는 게임을 만들려고 계획 없이 웨이브를 조사하며 실행에 옮겼지만 결국 여름 같은 게임 제작을 포기했다.그런데 너무 아쉬워서 여기까지 썼어요...
파의 계산 방법을 먼저 말하지 않다
어쨌든 메시의 정점을 자유롭게 이동하고 싶어요.
기본적으로, MeshMeshRenderer
그리기
Mesh를 유지하는 것은MeshFilter
이 메시는 혼자 할 수 있어요.
Unity 물리 연산 게임의 제작 방법
하지만 살짝 적어봤는데 메시 생성이 그렇게 어렵지 않았어요.
MeshRenderer와 MeshFilter가 GameObject를 만들었어요.
MyMesh
과정을 inspector에 설정합니다.MyMesh
등급은 다음과 같다.
MyMesh.cs
using System.Collections.Generic;
using UnityEngine;
public class MyMesh : MonoBehaviour
{
[SerializeField]
private MeshFilter meshFilter;
private Mesh mesh;
private List<Vector3> vertextList = new List<Vector3>();
private List<Vector2> uvList = new List<Vector2>();
private List<int> indexList = new List<int>();
void Start ()
{
mesh = CreatePlaneMesh();
meshFilter.mesh = mesh;
}
private Mesh CreatePlaneMesh()
{
var mesh = new Mesh();
vertextList.Add(new Vector3(-1, -1, 0));//0番頂点
vertextList.Add(new Vector3(1, -1, 0)); //1番頂点
vertextList.Add(new Vector3(-1, 1, 0)); //2番頂点
vertextList.Add(new Vector3(1, 1, 0)); //3番頂点
uvList.Add(new Vector2(0, 0));
uvList.Add(new Vector2(1, 0));
uvList.Add(new Vector2(0, 1));
uvList.Add(new Vector2(1, 1));
indexList.AddRange(new []{0,2,1,1,2,3});//0-2-1の頂点で1三角形。 1-2-3の頂点で1三角形。
mesh.SetVertices(vertextList);//meshに頂点群をセット
mesh.SetUVs(0,uvList);//meshにテクスチャのuv座標をセット(今回は割愛)
mesh.SetIndices(indexList.ToArray(),MeshTopology.Triangles, 0);//メッシュにどの頂点の順番で面を作るかセット
return mesh;
}
}
단지 이렇게 하면 유창한 판자를 나타낼 수 있다!잘 됐다!
그럼 우리 함께 정상에 도달합시다
그러니까
정점에 이르다 void Update()
{
for (var i = 0; i < vertextList.Count; i++)
{
vertextList[i] += new Vector3(Random.Range(-0.1f,0.1f), Random.Range(-0.1f, 0.1f),0);//全頂点のxとyをランダムでちょっと動かす
}
mesh.SetVertices(vertextList);
}
이렇게 되면
네!꼭대기부터 야옹야옹!SetUVs
와SetIndices
는 변경이 없기 때문에 설치하지 않아도 된다.
그리고 파도
그럼, 파도를 만들기 위해.
정점이 전혀 부족하기 때문에 옆에서 100개 정도 준비한다.
그리고 같은 요령으로 상단의 정점만 움직이면 파도를 완성할 수 있다.
※ 이번에는 신 곡선을 시도했습니다. private int cnt = 0;
public void Update()
{
for (var i = 0; i < vertexList.Count; i += 2)
{
var v = vertexList[i];
v.y = Mathf.Sin((i + cnt) / 20.0f);
vertexList[i] = v;
}
cnt++;
mesh.SetVertices(vertexList);
}
최후
이외에도 파도를 탈 수 있다.이렇게 되면 상세하게 놓을 필요가 있다BoxCollider2D
.
그 일대
https://gamedevelopment.tutsplus.com/tutorials/creating-dynamic-2d-water-effects-in-unity--gamedev-14143
참고할 수도 있고요.(이 예에서 메시를 대량으로 만들었다. 필요할까...?)
아름다운 야옹야옹 생활을 즐기다
Reference
이 문제에 관하여(Unity에서 메시 정점 새로 고침), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/divideby_zero/items/eef7604e306300fd7833
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
어쨌든 메시의 정점을 자유롭게 이동하고 싶어요.
기본적으로, Mesh
MeshRenderer
그리기Mesh를 유지하는 것은
MeshFilter
이 메시는 혼자 할 수 있어요.Unity 물리 연산 게임의 제작 방법
하지만 살짝 적어봤는데 메시 생성이 그렇게 어렵지 않았어요.
MeshRenderer와 MeshFilter가 GameObject를 만들었어요.
MyMesh
과정을 inspector에 설정합니다.MyMesh
등급은 다음과 같다.MyMesh.cs
using System.Collections.Generic;
using UnityEngine;
public class MyMesh : MonoBehaviour
{
[SerializeField]
private MeshFilter meshFilter;
private Mesh mesh;
private List<Vector3> vertextList = new List<Vector3>();
private List<Vector2> uvList = new List<Vector2>();
private List<int> indexList = new List<int>();
void Start ()
{
mesh = CreatePlaneMesh();
meshFilter.mesh = mesh;
}
private Mesh CreatePlaneMesh()
{
var mesh = new Mesh();
vertextList.Add(new Vector3(-1, -1, 0));//0番頂点
vertextList.Add(new Vector3(1, -1, 0)); //1番頂点
vertextList.Add(new Vector3(-1, 1, 0)); //2番頂点
vertextList.Add(new Vector3(1, 1, 0)); //3番頂点
uvList.Add(new Vector2(0, 0));
uvList.Add(new Vector2(1, 0));
uvList.Add(new Vector2(0, 1));
uvList.Add(new Vector2(1, 1));
indexList.AddRange(new []{0,2,1,1,2,3});//0-2-1の頂点で1三角形。 1-2-3の頂点で1三角形。
mesh.SetVertices(vertextList);//meshに頂点群をセット
mesh.SetUVs(0,uvList);//meshにテクスチャのuv座標をセット(今回は割愛)
mesh.SetIndices(indexList.ToArray(),MeshTopology.Triangles, 0);//メッシュにどの頂点の順番で面を作るかセット
return mesh;
}
}
단지 이렇게 하면 유창한 판자를 나타낼 수 있다!잘 됐다!그럼 우리 함께 정상에 도달합시다
그러니까
정점에 이르다 void Update()
{
for (var i = 0; i < vertextList.Count; i++)
{
vertextList[i] += new Vector3(Random.Range(-0.1f,0.1f), Random.Range(-0.1f, 0.1f),0);//全頂点のxとyをランダムでちょっと動かす
}
mesh.SetVertices(vertextList);
}
이렇게 되면
네!꼭대기부터 야옹야옹!SetUVs
와SetIndices
는 변경이 없기 때문에 설치하지 않아도 된다.
그리고 파도
그럼, 파도를 만들기 위해.
정점이 전혀 부족하기 때문에 옆에서 100개 정도 준비한다.
그리고 같은 요령으로 상단의 정점만 움직이면 파도를 완성할 수 있다.
※ 이번에는 신 곡선을 시도했습니다. private int cnt = 0;
public void Update()
{
for (var i = 0; i < vertexList.Count; i += 2)
{
var v = vertexList[i];
v.y = Mathf.Sin((i + cnt) / 20.0f);
vertexList[i] = v;
}
cnt++;
mesh.SetVertices(vertexList);
}
최후
이외에도 파도를 탈 수 있다.이렇게 되면 상세하게 놓을 필요가 있다BoxCollider2D
.
그 일대
https://gamedevelopment.tutsplus.com/tutorials/creating-dynamic-2d-water-effects-in-unity--gamedev-14143
참고할 수도 있고요.(이 예에서 메시를 대량으로 만들었다. 필요할까...?)
아름다운 야옹야옹 생활을 즐기다
Reference
이 문제에 관하여(Unity에서 메시 정점 새로 고침), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/divideby_zero/items/eef7604e306300fd7833
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
void Update()
{
for (var i = 0; i < vertextList.Count; i++)
{
vertextList[i] += new Vector3(Random.Range(-0.1f,0.1f), Random.Range(-0.1f, 0.1f),0);//全頂点のxとyをランダムでちょっと動かす
}
mesh.SetVertices(vertextList);
}
그럼, 파도를 만들기 위해.
정점이 전혀 부족하기 때문에 옆에서 100개 정도 준비한다.
그리고 같은 요령으로 상단의 정점만 움직이면 파도를 완성할 수 있다.
※ 이번에는 신 곡선을 시도했습니다.
private int cnt = 0;
public void Update()
{
for (var i = 0; i < vertexList.Count; i += 2)
{
var v = vertexList[i];
v.y = Mathf.Sin((i + cnt) / 20.0f);
vertexList[i] = v;
}
cnt++;
mesh.SetVertices(vertexList);
}
최후
이외에도 파도를 탈 수 있다.이렇게 되면 상세하게 놓을 필요가 있다BoxCollider2D
.
그 일대
https://gamedevelopment.tutsplus.com/tutorials/creating-dynamic-2d-water-effects-in-unity--gamedev-14143
참고할 수도 있고요.(이 예에서 메시를 대량으로 만들었다. 필요할까...?)
아름다운 야옹야옹 생활을 즐기다
Reference
이 문제에 관하여(Unity에서 메시 정점 새로 고침), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/divideby_zero/items/eef7604e306300fd7833
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Unity에서 메시 정점 새로 고침), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/divideby_zero/items/eef7604e306300fd7833텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)