#70 물고기 Ai 작업

+ Fish01 모델링 추가
+ Fish01 shader를 통한 애니메이션 추가
+ Boid 프리팹 수정
This commit is contained in:
NTG_Lenovo 2023-12-29 14:59:04 +09:00
parent e1079f2920
commit d84434997c
11 changed files with 856 additions and 540 deletions

View File

@ -781,79 +781,6 @@ Transform:
- {fileID: 44403557}
m_Father: {fileID: 357776295}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &102757400
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: -8679921383154817045, guid: 4fcad621167d55148be4bc4c00d7226e,
type: 3}
propertyPath: m_LocalPosition.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 4fcad621167d55148be4bc4c00d7226e,
type: 3}
propertyPath: m_LocalPosition.y
value: 4.25
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 4fcad621167d55148be4bc4c00d7226e,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 4fcad621167d55148be4bc4c00d7226e,
type: 3}
propertyPath: m_LocalRotation.w
value: 0.7071067
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 4fcad621167d55148be4bc4c00d7226e,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 4fcad621167d55148be4bc4c00d7226e,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 4fcad621167d55148be4bc4c00d7226e,
type: 3}
propertyPath: m_LocalRotation.z
value: 0.7071068
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 4fcad621167d55148be4bc4c00d7226e,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 4fcad621167d55148be4bc4c00d7226e,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: 4fcad621167d55148be4bc4c00d7226e,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: -7511558181221131132, guid: 4fcad621167d55148be4bc4c00d7226e,
type: 3}
propertyPath: 'm_Materials.Array.data[0]'
value:
objectReference: {fileID: 2100000, guid: ba438db46799cdc48b7a187f7d42df9e, type: 2}
- target: {fileID: 919132149155446097, guid: 4fcad621167d55148be4bc4c00d7226e,
type: 3}
propertyPath: m_Name
value: fish01
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 4fcad621167d55148be4bc4c00d7226e, type: 3}
--- !u!1 &107190133
GameObject:
m_ObjectHideFlags: 0
@ -7115,7 +7042,7 @@ PrefabInstance:
- target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47,
type: 3}
propertyPath: boidCount
value: 1000
value: 100
objectReference: {fileID: 0}
- target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47,
type: 3}
@ -7125,27 +7052,27 @@ PrefabInstance:
- target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47,
type: 3}
propertyPath: <EgoWeight>k__BackingField
value: 0.1
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47,
type: 3}
propertyPath: <BoundsWeight>k__BackingField
value: 10
value: 5
objectReference: {fileID: 0}
- target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47,
type: 3}
propertyPath: <CohesionWeight>k__BackingField
value: 10
value: 2
objectReference: {fileID: 0}
- target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47,
type: 3}
propertyPath: <AlignmentWeight>k__BackingField
value: 6
value: 3
objectReference: {fileID: 0}
- target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47,
type: 3}
propertyPath: <SeparationWeight>k__BackingField
value: 1
value: 2
objectReference: {fileID: 0}
- target: {fileID: 5146900491857106217, guid: f228040d76c9217409284544f353da47,
type: 3}
@ -10840,8 +10767,8 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1485085414}
serializedVersion: 2
m_LocalRotation: {x: 0.38024005, y: 0.61873704, z: -0.46296254, w: 0.5081807}
m_LocalPosition: {x: -0.0006713867, y: 0, z: -0.0033721924}
m_LocalRotation: {x: 0.38024017, y: 0.6187369, z: -0.46296236, w: 0.5081809}
m_LocalPosition: {x: -0.0006790161, y: 0, z: -0.00340271}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
@ -11268,94 +11195,6 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1508474649}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1001 &1516929766
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: -8679921383154817045, guid: d8bab48d09fd529438ea0c30410bd858,
type: 3}
propertyPath: m_LocalScale.x
value: 1
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: d8bab48d09fd529438ea0c30410bd858,
type: 3}
propertyPath: m_LocalScale.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: d8bab48d09fd529438ea0c30410bd858,
type: 3}
propertyPath: m_LocalScale.z
value: 1
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: d8bab48d09fd529438ea0c30410bd858,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: d8bab48d09fd529438ea0c30410bd858,
type: 3}
propertyPath: m_LocalPosition.y
value: 0.938
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: d8bab48d09fd529438ea0c30410bd858,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: d8bab48d09fd529438ea0c30410bd858,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: d8bab48d09fd529438ea0c30410bd858,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: d8bab48d09fd529438ea0c30410bd858,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: d8bab48d09fd529438ea0c30410bd858,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: d8bab48d09fd529438ea0c30410bd858,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: d8bab48d09fd529438ea0c30410bd858,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: d8bab48d09fd529438ea0c30410bd858,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: -7511558181221131132, guid: d8bab48d09fd529438ea0c30410bd858,
type: 3}
propertyPath: 'm_Materials.Array.data[0]'
value:
objectReference: {fileID: 2100000, guid: ba438db46799cdc48b7a187f7d42df9e, type: 2}
- target: {fileID: 919132149155446097, guid: d8bab48d09fd529438ea0c30410bd858,
type: 3}
propertyPath: m_Name
value: fish
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: d8bab48d09fd529438ea0c30410bd858, type: 3}
--- !u!4 &1537919015 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 2213139629052044068, guid: 0f7ff4b7b8d5e4f09ac4fc513061cd59,
@ -16652,5 +16491,3 @@ SceneRoots:
- {fileID: 280786784}
- {fileID: 2821987114204187354}
- {fileID: 718723263}
- {fileID: 1516929766}
- {fileID: 102757400}

View File

@ -15,6 +15,7 @@ namespace BlueWaterProject
[SerializeField] private float viewAngle = 120;
[SerializeField] private int maxNeighbourCount = 10;
[SerializeField] private float neighbourDistance = 6;
[SerializeField] private float avoidAdditionalSpeed = 10;
[Title("ETC")]
[SerializeField] private LayerMask boidUnitLayer;
@ -168,7 +169,7 @@ namespace BlueWaterProject
{
Debug.DrawLine(transform.position, hit.point, Color.black);
obstaclePos = hit.normal;
additionalSpeed = 10;
additionalSpeed = avoidAdditionalSpeed;
}
return obstaclePos;
}

View File

@ -1,3 +1,4 @@
using System.Collections;
using Sirenix.OdinInspector;
using UnityEngine;
using Random = UnityEngine.Random;
@ -23,27 +24,27 @@ namespace BlueWaterProject
[field: SerializeField] public Vector2 RandomSpeedRange { get; private set; } = new(5, 10);
[field: Range(0, 10)]
[field: Tooltip("응집력 가중치")]
[field: Tooltip("응집력(뭉치기) 가중치")]
[field: SerializeField] public float CohesionWeight { get; private set; } = 1;
[field: Range(0, 10)]
[field: Tooltip("정렬 가중치")]
[field: Tooltip("정렬(같은 방향) 가중치")]
[field: SerializeField] public float AlignmentWeight { get; private set; } = 1;
[field: Range(0, 10)]
[field: Tooltip("분리 가중치")]
[field: Tooltip("분리(서로 회피) 가중치")]
[field: SerializeField] public float SeparationWeight { get; private set; } = 1;
[field: Range(0, 100)]
[field: Tooltip("경계 가중치")]
[field: Tooltip("경계 범위 내 행동 가중치")]
[field: SerializeField] public float BoundsWeight { get; private set; } = 1;
[field: Range(0, 100)]
[field: Tooltip("장애물 가중치")]
[field: Tooltip("장애물 회피 가중치")]
[field: SerializeField] public float ObstacleWeight { get; private set; } = 10;
[field: Range(0, 10)]
[field: Tooltip("자아 가중치")]
[field: Tooltip("자아(독립행동) 가중치")]
[field: SerializeField] public float EgoWeight { get; private set; } = 1;
[Title("옵션")]
@ -78,5 +79,19 @@ namespace BlueWaterProject
boid.Init(this, Random.Range(RandomSpeedRange.x, RandomSpeedRange.y));
}
}
public void SetBoundPos(Vector3 value) => BoundMeshRenderer.transform.position = value;
public void SetBoundPosLerp(Vector3 value, float time) => StartCoroutine(BoundPosLerpCoroutine(value, 1/time));
private IEnumerator BoundPosLerpCoroutine(Vector3 value, float time)
{
while (Vector3.Distance(transform.position, value) > 0.1f)
{
transform.position = Vector3.Lerp(transform.position, value, time * Time.deltaTime);
yield return null;
}
transform.position = value;
}
}
}

View File

@ -49,7 +49,7 @@ Material:
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: b22e9f06f1fbc294c9cb94024e1e05ea, type: 3}
m_Texture: {fileID: 2800000, guid: b34b0ea64a298ba48a6f15ff41f219b4, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
@ -82,27 +82,34 @@ Material:
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _A: 0.5
- _AlphaClip: 0
- _AlphaToMask: 0
- _Amplitude: 0.15
- _AmplitudeX: 0.2
- _AmplitudeX_1: 0.2
- _AmplitudeX_2: 0.2
- _AmplitudeX_3: 0.2
- _AmplitudeY: 0.2
- _AmplitudeZ: 1
- _B: 0.7
- _Blend: 0
- _BlendModePreserveSpecular: 1
- _BlendOp: 0
- _BumpScale: 1
- _C: 6
- _ClearCoatMask: 0
- _ClearCoatSmoothness: 0
- _Cull: 0
- _Cutoff: 0.5
- _D: 0.15
- _DetailAlbedoMapScale: 1
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _DstBlendAlpha: 0
- _E: 0.2
- _EnvironmentReflections: 1
- _F: 1
- _FrequencyX: 1
- _FrequencyX_1: 1
- _FrequencyX_2: 1
@ -121,9 +128,11 @@ Material:
- _QueueOffset: 50
- _ReceiveShadows: 1
- _SampleGI: 0
- _Shake: 0.7
- _Smoothness: 0.5
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _Speed: 6
- _SpeedX: 1
- _SpeedY: 1
- _SpeedZ: 1
@ -132,6 +141,8 @@ Material:
- _Surface: 0
- _WorkflowMode: 1
- _ZWrite: 1
- _offsetY: 0.2
- _offsetZ: 0.5
m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
- _Color: {r: 1, g: 1, b: 1, a: 1}

View File

@ -52,7 +52,7 @@ MonoBehaviour:
neighbourDistance: 6
boidUnitLayer:
serializedVersion: 2
m_Bits: 0
m_Bits: 32768
obstacleLayer:
serializedVersion: 2
m_Bits: 2097672
@ -75,7 +75,7 @@ BoxCollider:
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 4}
m_Size: {x: 0.5, y: 0.9, z: 2}
m_Center: {x: 0, y: 0, z: 0}
--- !u!1 &5370122689380285007
GameObject:
@ -103,13 +103,13 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5370122689380285007}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071067}
m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: -0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1.9594047}
m_ConstrainProportionsScale: 0
m_LocalScale: {x: 0.2, y: 0.2, z: 0.2}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 4874816205509271808}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0}
--- !u!33 &1579208819468009085
MeshFilter:
m_ObjectHideFlags: 0
@ -117,7 +117,7 @@ MeshFilter:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5370122689380285007}
m_Mesh: {fileID: 1391105594336295549, guid: 4fcad621167d55148be4bc4c00d7226e, type: 3}
m_Mesh: {fileID: 1391105594336295549, guid: fbd7d2a74f65925409b9760a9b241131, type: 3}
--- !u!23 &1238523984028734065
MeshRenderer:
m_ObjectHideFlags: 0

Binary file not shown.

View File

@ -1,107 +0,0 @@
fileFormatVersion: 2
guid: d8bab48d09fd529438ea0c30410bd858
ModelImporter:
serializedVersion: 22200
internalIDToNameTable: []
externalObjects: {}
materials:
materialImportMode: 2
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importPhysicalCameras: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
nodeNameCollisionStrategy: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
strictVertexDataChecks: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
importBlendShapeDeformPercent: 1
remapMaterialsIfMaterialImportModeIsNone: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 4fcad621167d55148be4bc4c00d7226e
guid: fbd7d2a74f65925409b9760a9b241131
ModelImporter:
serializedVersion: 22200
internalIDToNameTable: []

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: b22e9f06f1fbc294c9cb94024e1e05ea
guid: b34b0ea64a298ba48a6f15ff41f219b4
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
@ -37,9 +37,9 @@ TextureImporter:
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
@ -52,7 +52,7 @@ TextureImporter:
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1

File diff suppressed because it is too large Load Diff