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()
{
#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(standbyClip);
#endif
players = GetComponentsInChildren<DShowMoviePlayer>();
}
@ -76,11 +66,7 @@ public class CharacterBehaviour : MonoBehaviour
{
GameObject triggerObj = new GameObject(clip.name);
triggerObj.transform.parent = this.transform;
SetClip(triggerObj.AddComponent<DShowMoviePlayer>(), clip);
}
void SetClip(DShowMoviePlayer player, DShowClip clip)
{
var player = triggerObj.AddComponent<DShowMoviePlayer>();
player.VideoAsset = clip;
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;
noise *= roaming * Time.deltaTime;
float padding = transform.localScale.x * 0.5f;
Vector3 pos = transform.localPosition;
Vector3 pos = transform.position;
switch (area)
{
case Area.TopWall:
{
float minmax = Mathf.Abs(padding - FrozenScreenToWorldSpace.Instance.width * 0.5f);
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;
case Area.LeftWall:
@ -204,7 +190,7 @@ public class CharacterBehaviour : MonoBehaviour
{
float minmax = Mathf.Abs(padding - FrozenScreenToWorldSpace.Instance.length * 0.5f);
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;
}
@ -245,20 +231,31 @@ public class CharacterBehaviour : MonoBehaviour
q.SetLookRotation(Vector3.forward);
}
transform.rotation = q;
transform.localPosition = newPos;
transform.position = newPos + FrozenScreenToWorldSpace.Instance.Position;
RandomPos();
}
void RandomPos()
{
Vector3 randomPos = transform.localPosition;
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)
wallRoi.x = Random.Range(minX, FrozenScreenToWorldSpace.Instance.width - minX) / FrozenScreenToWorldSpace.Instance.width;
else
wallRoi.x = Random.Range(minX, FrozenScreenToWorldSpace.Instance.length - minX) / FrozenScreenToWorldSpace.Instance.length;
#endif
wallRoi.y = origin_height / FrozenScreenToWorldSpace.Instance.height;
UpdatePos();
UpdateButtonPos();
@ -266,13 +263,30 @@ public class CharacterBehaviour : MonoBehaviour
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;
if (area == Area.TopWall)
n_pos.x = Mathf.Lerp(-FrozenScreenToWorldSpace.Instance.width / 2, FrozenScreenToWorldSpace.Instance.width / 2, wallRoi.x);
else
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);
transform.localPosition = n_pos;
#endif
//SetButtonPos();
}
@ -295,7 +309,7 @@ public class CharacterBehaviour : MonoBehaviour
void UpdateWallRoiFromPosition()
{
wallRoi = FrozenScreenToWorldSpace.Instance.GetWallRoiFromPosition(area, transform.localPosition);
wallRoi = FrozenScreenToWorldSpace.Instance.GetWallRoiFromPosition(area, transform.position);
}
private void Trigger(PointerEventData data)

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

@ -91,7 +91,7 @@ namespace UltraCombos.Kinect2MotionTransmit
private void Start()
{
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_low_data = new byte[buffer.count / 2];
velocity_data = new byte[buffer.count];
@ -257,7 +257,7 @@ namespace UltraCombos.Kinect2MotionTransmit
};
server.Start();
Debug.Log("Start Server");
Debug.Log("[Kinect Grpc] Start Server");
}
catch (System.Exception e)
{

Loading…
Cancel
Save