unity 3d 让物体跟随玩家
unity 3d make object follow player
我想在unity3D上做一个机器人。我想让机器人的抓手在与物体碰撞时附加抓手。所以物体将跟随夹具。
为了制作这样的东西,要在这个脚本中添加什么?
private Rigidbody gripper;
void Start()
{
gripper_part01 = GetComponent<Rigidbody>();
}
void Update()
{
if (Input.GetKey("a"))
gripper.AddForce(transform.forward * 100);
}
void OnCollisionEnter(Collider obj1)
{
// how to make obj1 follow the gripper
}
查看状态机模式
http://gameprogrammingpatterns.com/state.html
您需要创建 2 个状态:
- 不关注(默认)
- 正在关注
当玩家进入对撞机时,将状态切换为跟随。我不会给你写一个完整的状态 machine/state 切换架构供你复制和粘贴,但我可以告诉你你会想要让状态本身成为 MonoBehavior class,并且实际的 StateMachine 将没有任何父 classes,并且将附加到对象的控制器。
然后,您需要像这样跟踪玩家的坐标
Vector3 playerPosition;
void OnCollisionEnter(Collider obj1)
{
if(obj1.gameObject.tag == "Player"){
playerPosition = obj1.transform.position;
myStateMachine.switchState("Follow"); //obviously replace this with your own state machine code
}
}
确保玩家的游戏对象在 Unity 编辑器中确实具有 "Player" 标签。
可以通过多种方法完成。但最简单的方法是在 gripper 发生碰撞时立即创建 obj1 子对象。
代码看起来像这样
void OnCollisionEnter(Collider obj1)
{
// how to make obj1 follow the gripper
obj1.transform.parent = gripper.transform;
}
我想在unity3D上做一个机器人。我想让机器人的抓手在与物体碰撞时附加抓手。所以物体将跟随夹具。
为了制作这样的东西,要在这个脚本中添加什么?
private Rigidbody gripper;
void Start()
{
gripper_part01 = GetComponent<Rigidbody>();
}
void Update()
{
if (Input.GetKey("a"))
gripper.AddForce(transform.forward * 100);
}
void OnCollisionEnter(Collider obj1)
{
// how to make obj1 follow the gripper
}
查看状态机模式
http://gameprogrammingpatterns.com/state.html
您需要创建 2 个状态:
- 不关注(默认)
- 正在关注
当玩家进入对撞机时,将状态切换为跟随。我不会给你写一个完整的状态 machine/state 切换架构供你复制和粘贴,但我可以告诉你你会想要让状态本身成为 MonoBehavior class,并且实际的 StateMachine 将没有任何父 classes,并且将附加到对象的控制器。
然后,您需要像这样跟踪玩家的坐标
Vector3 playerPosition;
void OnCollisionEnter(Collider obj1)
{
if(obj1.gameObject.tag == "Player"){
playerPosition = obj1.transform.position;
myStateMachine.switchState("Follow"); //obviously replace this with your own state machine code
}
}
确保玩家的游戏对象在 Unity 编辑器中确实具有 "Player" 标签。
可以通过多种方法完成。但最简单的方法是在 gripper 发生碰撞时立即创建 obj1 子对象。
代码看起来像这样
void OnCollisionEnter(Collider obj1)
{
// how to make obj1 follow the gripper
obj1.transform.parent = gripper.transform;
}