Health/Assets/Scripts/PoseCheck/HeadTurnLeft.cs

34 lines
1.1 KiB
C#
Raw Permalink Normal View History

2023-11-07 13:55:35 +00:00
using OpenCVForUnity.CoreModule;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HeadTurnLeft : PoseBase
{
private bool _isRunning = false;
public override bool CheckPose(List<Point> points)
{
2023-11-13 02:53:34 +00:00
// 必须包含 Nose 和 LEar 和 Neck 的点位
if (!YogaManager.Instance.ActionCheckPoints(points))
2023-11-07 13:55:35 +00:00
return false;
2023-11-12 15:09:33 +00:00
var basePoint = YogaManager.Instance.Points;
2023-11-13 02:53:34 +00:00
if (!YogaManager.Instance.ActionCheckPoints(basePoint))
return false;
2023-11-12 15:09:33 +00:00
2023-11-07 13:55:35 +00:00
//左转头检测
2023-11-10 08:12:37 +00:00
2023-11-13 02:53:34 +00:00
var headVector = ("REye".vector(points) - "LEye".vector(points)).normalized;
var headBaseVector = ("RElbow".vector(basePoint) - "LElbow".vector(basePoint)).normalized;
2023-11-10 08:12:37 +00:00
2023-11-13 02:53:34 +00:00
var noseVector = ("Nose".vector(points) - "Neck".vector(points)).normalized;
var noseBaseVector = ("Nose".vector(basePoint) - "Neck".vector(basePoint)).normalized;
2023-11-07 13:55:35 +00:00
2023-11-13 02:53:34 +00:00
if (Vector2.Dot(headVector, noseVector) > Vector2.Dot(headBaseVector, noseBaseVector) + 0.1f)
2023-11-07 13:55:35 +00:00
return true;
2023-11-13 06:43:34 +00:00
2023-11-07 13:55:35 +00:00
return false;
}
2023-11-12 15:09:33 +00:00
}