我通过改进Unity的ARCore教程来制作游戏。 在识别了平面并触摸它之后,物体从它出来,并且在走到创建的物体之后,角色物体站在物体的前面。 我在这里创建了两个按钮,Jump和Angry,这样当我单击此按钮时,将执行相应的动画。 当您测试在场景中的预制件中创建的角色对象时,动画在单击时可以正常工作。
在此代码中,创建了一个对象和一个角色对象。
4
8
3
5
3
6
2
但是当你在设备上运行它时,角色只会挂在创建的对象上并停止,即使你触摸按钮,也不会应用后续动画。 因此,当我在设备上运行在Scene中创建的角色对象时,动画可以正常工作。 我不知道为什么。
这是允许Jump和Angry动画师工作的代码。
Touch touch;
if (Input.touchCount < 1 || (touch = Input.GetTouch(0)).phase != TouchPhase.Began)
{
return;
}
// Raycast against the location the player touched to search for planes.
TrackableHit hit;
TrackableHitFlags raycastFilter = TrackableHitFlags.PlaneWithinPolygon |
TrackableHitFlags.FeaturePointWithSurfaceNormal;
if (Frame.Raycast(touch.position.x, touch.position.y, raycastFilter, out hit))
{
if (MaximumObject > currentlyObject)
{
currentlyObject = currentlyObject + 1;
var tableObject = Instantiate(TablePrefab, hit.Pose.position, hit.Pose.rotation);
// Create an anchor to allow ARCore to track the hitpoint as understanding of the physical
// world evolves.
var anchor = hit.Trackable.CreateAnchor(hit.Pose);
// Andy should look at the camera but still be flush with the plane.
if ((hit.Flags & TrackableHitFlags.PlaneWithinPolygon) != TrackableHitFlags.None)
{
// Get the camera position and match the y-component with the hit position.
Vector3 cameraPositionSameY = FirstPersonCamera.transform.position;
cameraPositionSameY.y = hit.Pose.position.y;
// Have look toward the camera respecting his "up" perspective, which may be from ceiling.
tableObject.transform.LookAt(cameraPositionSameY, tableObject.transform.up);
}
// Make Andy model a child of the anchor.
tableObject.transform.parent = anchor.transform;
if (currentlyObject > 0)
{
var boyObject = Instantiate(Boy, tableObject.transform.position , tableObject.transform.rotation);
boyObject.transform.Translate(new Vector3(0, -3, -10));
}
我尝试了几件事并尝试使用游戏对象而不实例化它,但是屏幕上根本没有出现该对象。
此外,如果您在资源中使用的对象不是在场景中创建的对象,则会显示消息“动画制作者未播放public Animator guest;
public void Jump_motion()
{
guest.SetTrigger("Jump");
}
public void Angry_motion()
{
guest.SetTrigger("Angry");
}
”。当您尝试在Animator AnimatorController
上运行附加到预制件的方法而不是实例化的GameObject时,我也发现了此警告。我收到了答案。
如果是这样,那么只有在层次结构中实例化的对象才能正常接收动画,我将尝试使用脚本实例化它们。 我希望脚本实例化的角色对象会收到正常的动画命令,但我不知道该怎么做。