update CharacterBehaviour with world position

refine
master
uc-hoba 8 years ago
parent 258430cf3f
commit cdefa45513
  1. 60
      Unity_2018_Frozen/Assets/Frozen/Script/CharacterBehaviour.cs
  2. 3
      Unity_2018_Frozen/Assets/Frozen/Script/FrozenScreenToWorldSpace.cs
  3. 4
      Unity_2018_Frozen/Assets/KinectOpticalFlow/Grpc/KinectGrpcServer.cs

@ -57,18 +57,8 @@ public class CharacterBehaviour : MonoBehaviour
void InitialiseDSPlayer() void InitialiseDSPlayer()
{ {
#if false
GameObject triggerObj = new GameObject("Trigger");
triggerObj.transform.parent = this.transform;
SetClip(triggerObj.AddComponent<DShowMoviePlayer>(), triggerClip);
GameObject standbyObj = new GameObject("Standby");
standbyObj.transform.parent = this.transform;
SetClip(standbyObj.AddComponent<DShowMoviePlayer>(), standbyClip);
#else
CreateDSPlayer(triggerClip); CreateDSPlayer(triggerClip);
CreateDSPlayer(standbyClip); CreateDSPlayer(standbyClip);
#endif
players = GetComponentsInChildren<DShowMoviePlayer>(); players = GetComponentsInChildren<DShowMoviePlayer>();
} }
@ -76,11 +66,7 @@ public class CharacterBehaviour : MonoBehaviour
{ {
GameObject triggerObj = new GameObject(clip.name); GameObject triggerObj = new GameObject(clip.name);
triggerObj.transform.parent = this.transform; triggerObj.transform.parent = this.transform;
SetClip(triggerObj.AddComponent<DShowMoviePlayer>(), clip); var player = triggerObj.AddComponent<DShowMoviePlayer>();
}
void SetClip(DShowMoviePlayer player, DShowClip clip)
{
player.VideoAsset = clip; player.VideoAsset = clip;
player.Load(); player.Load();
} }
@ -189,14 +175,14 @@ public class CharacterBehaviour : MonoBehaviour
float noise = Mathf.PerlinNoise(Time.time * 0.4f, roaming_seed) > 0.5f ? 1.0f : -1.0f; float noise = Mathf.PerlinNoise(Time.time * 0.4f, roaming_seed) > 0.5f ? 1.0f : -1.0f;
noise *= roaming * Time.deltaTime; noise *= roaming * Time.deltaTime;
float padding = transform.localScale.x * 0.5f; float padding = transform.localScale.x * 0.5f;
Vector3 pos = transform.localPosition; Vector3 pos = transform.position;
switch (area) switch (area)
{ {
case Area.TopWall: case Area.TopWall:
{ {
float minmax = Mathf.Abs(padding - FrozenScreenToWorldSpace.Instance.width * 0.5f); float minmax = Mathf.Abs(padding - FrozenScreenToWorldSpace.Instance.width * 0.5f);
float x = Mathf.Clamp(pos.x + noise, -minmax, minmax); float x = Mathf.Clamp(pos.x + noise, -minmax, minmax);
transform.localPosition = new Vector3(x, pos.y, pos.z); transform.position = new Vector3(x, pos.y, pos.z);
} }
break; break;
case Area.LeftWall: case Area.LeftWall:
@ -204,7 +190,7 @@ public class CharacterBehaviour : MonoBehaviour
{ {
float minmax = Mathf.Abs(padding - FrozenScreenToWorldSpace.Instance.length * 0.5f); float minmax = Mathf.Abs(padding - FrozenScreenToWorldSpace.Instance.length * 0.5f);
float z = Mathf.Clamp(pos.z + noise, -minmax, minmax); float z = Mathf.Clamp(pos.z + noise, -minmax, minmax);
transform.localPosition = new Vector3(pos.x, pos.y, z); transform.position = new Vector3(pos.x, pos.y, z);
} }
break; break;
} }
@ -245,20 +231,31 @@ public class CharacterBehaviour : MonoBehaviour
q.SetLookRotation(Vector3.forward); q.SetLookRotation(Vector3.forward);
} }
transform.rotation = q; transform.rotation = q;
transform.localPosition = newPos; transform.position = newPos + FrozenScreenToWorldSpace.Instance.Position;
RandomPos(); RandomPos();
} }
void RandomPos() void RandomPos()
{ {
Vector3 randomPos = transform.localPosition;
float minX = transform.localScale.x / 2; float minX = transform.localScale.x / 2;
#if true
switch (area)
{
case Area.TopWall:
wallRoi.x = Random.Range(minX, FrozenScreenToWorldSpace.Instance.width - minX) / FrozenScreenToWorldSpace.Instance.width;
break;
case Area.LeftWall:
case Area.RightWall:
wallRoi.x = Random.Range(minX, FrozenScreenToWorldSpace.Instance.length - minX) / FrozenScreenToWorldSpace.Instance.length;
break;
}
#else
Vector3 randomPos = transform.localPosition;
if (randomPos.x == 0) if (randomPos.x == 0)
wallRoi.x = Random.Range(minX, FrozenScreenToWorldSpace.Instance.width - minX) / FrozenScreenToWorldSpace.Instance.width; wallRoi.x = Random.Range(minX, FrozenScreenToWorldSpace.Instance.width - minX) / FrozenScreenToWorldSpace.Instance.width;
else else
wallRoi.x = Random.Range(minX, FrozenScreenToWorldSpace.Instance.length - minX) / FrozenScreenToWorldSpace.Instance.length; wallRoi.x = Random.Range(minX, FrozenScreenToWorldSpace.Instance.length - minX) / FrozenScreenToWorldSpace.Instance.length;
#endif
wallRoi.y = origin_height / FrozenScreenToWorldSpace.Instance.height; wallRoi.y = origin_height / FrozenScreenToWorldSpace.Instance.height;
UpdatePos(); UpdatePos();
UpdateButtonPos(); UpdateButtonPos();
@ -266,13 +263,30 @@ public class CharacterBehaviour : MonoBehaviour
void UpdatePos() void UpdatePos()
{ {
#if true
Vector3 n_pos = transform.position;
switch (area)
{
case Area.TopWall:
n_pos.x = Mathf.Lerp(-FrozenScreenToWorldSpace.Instance.width / 2, FrozenScreenToWorldSpace.Instance.width / 2, wallRoi.x);
break;
case Area.LeftWall:
case Area.RightWall:
n_pos.z = Mathf.Lerp(-FrozenScreenToWorldSpace.Instance.length / 2, FrozenScreenToWorldSpace.Instance.length / 2, wallRoi.x);
break;
}
n_pos.y = Mathf.Lerp(0.0f, FrozenScreenToWorldSpace.Instance.height, wallRoi.y);
transform.position = n_pos + FrozenScreenToWorldSpace.Instance.Position;
#else
Vector3 n_pos = transform.localPosition; Vector3 n_pos = transform.localPosition;
if (area == Area.TopWall) if (area == Area.TopWall)
n_pos.x = Mathf.Lerp(-FrozenScreenToWorldSpace.Instance.width / 2, FrozenScreenToWorldSpace.Instance.width / 2, wallRoi.x); n_pos.x = Mathf.Lerp(-FrozenScreenToWorldSpace.Instance.width / 2, FrozenScreenToWorldSpace.Instance.width / 2, wallRoi.x);
else else
n_pos.z = Mathf.Lerp(-FrozenScreenToWorldSpace.Instance.length / 2, FrozenScreenToWorldSpace.Instance.length / 2, wallRoi.x); n_pos.z = Mathf.Lerp(-FrozenScreenToWorldSpace.Instance.length / 2, FrozenScreenToWorldSpace.Instance.length / 2, wallRoi.x);
n_pos.y = Mathf.Lerp(0, (float)FrozenScreenToWorldSpace.Instance.height, wallRoi.y); n_pos.y = Mathf.Lerp(0, (float)FrozenScreenToWorldSpace.Instance.height, wallRoi.y);
transform.localPosition = n_pos; transform.localPosition = n_pos;
#endif
//SetButtonPos(); //SetButtonPos();
} }
@ -295,7 +309,7 @@ public class CharacterBehaviour : MonoBehaviour
void UpdateWallRoiFromPosition() void UpdateWallRoiFromPosition()
{ {
wallRoi = FrozenScreenToWorldSpace.Instance.GetWallRoiFromPosition(area, transform.localPosition); wallRoi = FrozenScreenToWorldSpace.Instance.GetWallRoiFromPosition(area, transform.position);
} }
private void Trigger(PointerEventData data) private void Trigger(PointerEventData data)

@ -131,6 +131,7 @@ public class FrozenScreenToWorldSpace : MonoBehaviour {
public Vector2 GetWallRoiFromPosition(Area area, Vector3 position) public Vector2 GetWallRoiFromPosition(Area area, Vector3 position)
{ {
position -= transform.position;
Vector2 roi = Vector2.zero; Vector2 roi = Vector2.zero;
switch (area) switch (area)
{ {
@ -155,4 +156,6 @@ public class FrozenScreenToWorldSpace : MonoBehaviour {
} }
return roi; return roi;
} }
public Vector3 Position { get { return transform.position; } }
} }

@ -91,7 +91,7 @@ namespace UltraCombos.Kinect2MotionTransmit
private void Start() private void Start()
{ {
buffer = new ComputeBuffer(width * height, sizeof(float) * 4); buffer = new ComputeBuffer(width * height, sizeof(float) * 4);
Debug.LogFormat("Buffer is created by count {0} and stride {1}", buffer.count, buffer.stride); Debug.LogFormat("[Kinect Grpc] Buffer is created by count {0} and stride {1}", buffer.count, buffer.stride);
depth_high_data = new byte[buffer.count / 2]; depth_high_data = new byte[buffer.count / 2];
depth_low_data = new byte[buffer.count / 2]; depth_low_data = new byte[buffer.count / 2];
velocity_data = new byte[buffer.count]; velocity_data = new byte[buffer.count];
@ -257,7 +257,7 @@ namespace UltraCombos.Kinect2MotionTransmit
}; };
server.Start(); server.Start();
Debug.Log("Start Server"); Debug.Log("[Kinect Grpc] Start Server");
} }
catch (System.Exception e) catch (System.Exception e)
{ {

Loading…
Cancel
Save