Commit 12770ec8 authored by 16이진형's avatar 16이진형

오브젝트타입마다 서로 충돌할지 설정가능

parent 46db69f0
......@@ -1098,6 +1098,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 0bf826b8a4774ba4b9c6a1cff6925667, type: 3}
m_Name:
m_EditorClassIdentifier:
objectType: 1
collisionPreset: 1
beta: 0
alpha: {x: 0, y: 0, z: 0}
v: {x: 0, y: 0, z: 0}
......@@ -1419,6 +1421,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 9cbe363fdf02257478cb799cdf2190b3, type: 3}
m_Name:
m_EditorClassIdentifier:
objectType: 0
collisionPreset: 0
beta: 0
alpha: {x: 0, y: 0, z: 0}
v: {x: 0, y: 0, z: 0}
......@@ -2650,6 +2654,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 36bd4b20d3bc814459c577f508eda20c, type: 3}
m_Name:
m_EditorClassIdentifier:
objectType: 2
collisionPreset: 2
beta: 0
alpha: {x: 0, y: 0, z: 0}
v: {x: 0, y: 0, z: 0}
......
fileFormatVersion: 2
guid: e0ce320f331cd9349a5fcfac34484b83
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
namespace Assets.Scripts.Collision
{
/// <summary>
///
/// </summary>
static class CollisionPreset
{
public static CollisionType[] Player { get; private set; } = {
new CollisionType(ObjectType.player,true),
new CollisionType(ObjectType.normalobject,true),
new CollisionType(ObjectType.interactive,false),
new CollisionType(ObjectType.wall,true)
};
public static CollisionType[] NormalObject { get; private set; } = {
new CollisionType(ObjectType.player,true),
new CollisionType(ObjectType.normalobject,true),
new CollisionType(ObjectType.interactive,true),
new CollisionType(ObjectType.wall,true)
};
public static CollisionType[] Interactive { get; private set; } = {
new CollisionType(ObjectType.player,false),
new CollisionType(ObjectType.normalobject,true),
new CollisionType(ObjectType.interactive,true),
new CollisionType(ObjectType.wall,true)
};
public static CollisionType[] Wall { get; private set; } = {
new CollisionType(ObjectType.player,true),
new CollisionType(ObjectType.normalobject,true),
new CollisionType(ObjectType.interactive,true),
new CollisionType(ObjectType.wall,false)
};
}
/// <summary>
/// etc는 직접 어떻게 정할지 정해줘야함.
/// </summary>
public enum PresetType
{
player,
normalobject,
interactive,
wall,
etc
}
}
fileFormatVersion: 2
guid: 5d01750672178874ea2f4e1213fc3b32
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using Assets.Scripts.Collision;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Assets.Scripts.Collision
{
public struct CollisionType
{
public ObjectType other;
public bool isCollision;
public CollisionType(ObjectType other,bool isCollision)
{
this.other = other;
this.isCollision = isCollision;
}
}
}
fileFormatVersion: 2
guid: a4077f36a1fb2fb4fb415d9439b9255a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Assets.Scripts.Collision
{
public enum ObjectType
{
player,
normalobject,
interactive,
wall
}
}
fileFormatVersion: 2
guid: 2834fa3d0a508034a94d787cc74c3d3e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
......@@ -3,9 +3,21 @@ using System.Collections.Generic;
using UnityEngine;
using MathNet.Numerics.LinearAlgebra;
using MathNet.Numerics.LinearAlgebra.Double;
using Assets.Scripts.Collision;
using System;
public class FlatlandMovement : MonoBehaviour
{
//충돌처리
[SerializeField]
protected ObjectType objectType;
[SerializeField]
protected PresetType collisionPreset;
protected CollisionType[] howToCollison;
protected bool toggle = false;
protected bool grabbed = false;
......@@ -50,10 +62,32 @@ public class FlatlandMovement : MonoBehaviour
List<Hash128> collisions = new List<Hash128>();
public ObjectType ObjectType { get { return objectType; } }
protected void Start()
{
Physics.IgnoreLayerCollision(0, 1);
startScale = theobject.transform.localScale;
switch (collisionPreset)
{
case PresetType.player:
howToCollison = CollisionPreset.Player;
break;
case PresetType.normalobject:
howToCollison = CollisionPreset.NormalObject;
break;
case PresetType.interactive:
howToCollison = CollisionPreset.Interactive;
break;
case PresetType.wall:
howToCollison = CollisionPreset.Wall;
break;
case PresetType.etc:
break;
default:
break;
}
}
protected void FixedUpdate()
......@@ -290,10 +324,20 @@ public class FlatlandMovement : MonoBehaviour
return;
}
//howToCollison
collisions.Add(collision.gameObject.GetComponent<ExtrudedMesh>().hash);
FlatlandMovement other = collision.transform.parent.GetComponent<FlatlandMovement>();
CollisionType type = Array.Find(howToCollison, (x) => { return x.other == other.ObjectType; });
if (!type.isCollision)
{
//충돌하지 않을시 충돌하지 않음.
return;
}
Vector3 col = (other.v - this.v);
var tmp = collision.GetContact(0).normal;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment