diff --git a/Assets/Scripts/Conditions/ObjClickCondition.cs b/Assets/Scripts/Conditions/ObjClickCondition.cs index 2bcfdad4..3dd78de4 100644 --- a/Assets/Scripts/Conditions/ObjClickCondition.cs +++ b/Assets/Scripts/Conditions/ObjClickCondition.cs @@ -16,6 +16,7 @@ namespace QFramework public GameObject obj = null; string path; string deviceName; + bool isRight; public static ObjClickCondition Allocate(string path, Dictionary datas) { var conditionAction = mSimpleObjectPool.Allocate(); @@ -24,6 +25,11 @@ namespace QFramework conditionAction.Reset(); conditionAction.path = path; conditionAction.deviceName = datas.ContainsKey("deviceName") ? datas["deviceName"] : null; + conditionAction.isRight = true; + if (datas.ContainsKey("isRight")) + { + bool.TryParse(datas["isRight"], out conditionAction.isRight); + } return conditionAction; } public bool Check() @@ -46,7 +52,14 @@ namespace QFramework RaycastHit hit; if (Physics.Raycast(ray, out hit)) { - return obj == hit.collider.gameObject; + if (isRight) + { + return obj == hit.collider.gameObject; + } + else + { + return obj != hit.collider.gameObject; + } } } return false; diff --git a/Assets/Scripts/Xml/XmlParser.cs b/Assets/Scripts/Xml/XmlParser.cs index d4f57513..86842e1d 100644 --- a/Assets/Scripts/Xml/XmlParser.cs +++ b/Assets/Scripts/Xml/XmlParser.cs @@ -1049,6 +1049,11 @@ namespace XMLTool { act.args.Add("deviceName", deviceName.Value); } + XAttribute isRight = action.Attribute("isRight"); + if (isRight != null) + { + act.args.Add("isRight", isRight.Value); + } newAction = act; break; default: diff --git a/Doc/Xml配置文档.xml b/Doc/Xml配置文档.xml index 8844d63e..1accb015 100644 --- a/Doc/Xml配置文档.xml +++ b/Doc/Xml配置文档.xml @@ -79,8 +79,8 @@ - - + +