portal interaction and VR body

This commit is contained in:
2022-03-24 18:02:34 +02:00
parent 84e21c94f3
commit 0cb487d781
1290 changed files with 402732 additions and 1745 deletions

60
Assets/VRFootIK.cs Normal file
View File

@@ -0,0 +1,60 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class VRFootIK : MonoBehaviour
{
private Animator animator;
public Vector3 footOffset;
[Range(0,1)]
public float rightFootPosWeight = 1;
[Range(0, 1)]
public float rightFootRotWeight = 1;
[Range(0,1)]
public float leftFootPosWeight = 1;
[Range(0, 1)]
public float leftFootRotWeight = 1;
// Start is called before the first frame update
void Start()
{
animator = GetComponent<Animator>();
}
private void OnAnimatorIK(int layerIndex)
{
Vector3 rightFootPos = animator.GetIKPosition(AvatarIKGoal.RightFoot);
RaycastHit hit;
bool hasHit = Physics.Raycast(rightFootPos + Vector3.up, Vector3.down, out hit);
if (hasHit)
{
animator.SetIKPositionWeight(AvatarIKGoal.RightFoot, rightFootPosWeight);
animator.SetIKPosition(AvatarIKGoal.RightFoot, hit.point + footOffset);
Quaternion rightFootRotation = Quaternion.LookRotation(Vector3.ProjectOnPlane(transform.forward, hit.normal), hit.normal);
animator.SetIKRotationWeight(AvatarIKGoal.RightFoot, rightFootRotWeight);
animator.SetIKRotation(AvatarIKGoal.RightFoot, rightFootRotation);
}
else
{
animator.SetIKPositionWeight(AvatarIKGoal.RightFoot, 0);
}
Vector3 leftFootPos = animator.GetIKPosition(AvatarIKGoal.LeftFoot);
hasHit = Physics.Raycast(leftFootPos + Vector3.up, Vector3.down, out hit);
if (hasHit)
{
animator.SetIKPositionWeight(AvatarIKGoal.LeftFoot, leftFootPosWeight);
animator.SetIKPosition(AvatarIKGoal.LeftFoot, hit.point + footOffset);
Quaternion leftFootRotation = Quaternion.LookRotation(Vector3.ProjectOnPlane(transform.forward, hit.normal), hit.normal);
animator.SetIKRotationWeight(AvatarIKGoal.LeftFoot, leftFootRotWeight);
animator.SetIKRotation(AvatarIKGoal.LeftFoot, leftFootRotation);
}
else
{
animator.SetIKPositionWeight(AvatarIKGoal.LeftFoot, 0);
}
}
}