当前位置:   article > 正文

Unity 船的控制_unity航海

unity航海

原理

按下WS键时,给船一个前后方向上的推力
按下AD键时,给船一个围绕Y轴旋转的扭矩

扭矩 Torque

扭矩力,是使物体发生转动的力。

玩家控制

如果进入驾驶状态,则禁用玩家控制脚本,并使用父子约束将玩家固定在船上。

如果退出驾驶状态,则恢复启用玩家控制脚本,销毁父子约束组件。

配置方法

将脚本挂载在船上,并指定玩家对象

还需要限制船的刚体在X、Z轴上的旋转

效果

代码

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.Animations;
  5. public class Motorboat : MonoBehaviour
  6. {
  7. public GameObject player;
  8. public float thrustForce = 50000; //推力
  9. public float torque = 5000; //扭矩
  10. bool isOperated = false;
  11. private Rigidbody rigidbody;
  12. void Start()
  13. {
  14. rigidbody = GetComponent<Rigidbody>();
  15. }
  16. void Update()
  17. {
  18. if (Input.GetKeyDown(KeyCode.B) && isOperated == false)
  19. {
  20. isOperated = true;
  21. player.GetComponent<PlayerControl>().enabled = false;
  22. player.AddComponent<ParentConstraint>();
  23. ConstraintSource constraintSource = new ConstraintSource(){
  24. sourceTransform = transform,
  25. weight = 1
  26. };
  27. player.GetComponent<ParentConstraint>().SetSources(new List<ConstraintSource>(){constraintSource});
  28. player.GetComponent<ParentConstraint>().SetTranslationOffset(0, new Vector3(0, 0.3f, 0));
  29. player.GetComponent<ParentConstraint>().constraintActive = true;
  30. }
  31. else if(Input.GetKeyDown(KeyCode.B) && isOperated == true)
  32. {
  33. isOperated = false;
  34. player.GetComponent<PlayerControl>().enabled = true;
  35. player.GetComponent<ParentConstraint>().SetSources(new List<ConstraintSource>());
  36. player.GetComponent<ParentConstraint>().constraintActive = false;
  37. Destroy(player.GetComponent<ParentConstraint>());
  38. }
  39. Move();
  40. }
  41. void Move()
  42. {
  43. if(!isOperated) return;
  44. float v = Input.GetAxis("Vertical");
  45. float h = Input.GetAxis("Horizontal");
  46. rigidbody.AddForce(transform.forward * v * thrustForce);
  47. rigidbody.AddTorque(transform.up * h * torque);
  48. }
  49. }

Unity 水体浮力的实现

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/127963
推荐阅读
相关标签
  

闽ICP备14008679号