Unity_物体移动方法归纳

        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
1、方法1 transform.Translate 平移
        transform.Translate(new Vector3(h,0,v)*Time.deltaTime*3, Space.World);
2、方法2 Vector3.Lerp 插值 /Vector3.MoveTowards
        float speed = Time.deltaTime * 30;
        Vector3 TargetPos;
        TargetPos = new Vector3(transform.position.x + h * speed, transform.position.y, transform.position.z + v * speed);
        transform.position = Vector3.Lerp(this.transform.position, TargetPos, 0.1f);
3、方法3 Vector3.SmoothDamp 平滑阻尼
        float speed = Time.deltaTime * 30;
        Vector3 TargetPos;
        TargetPos = new Vector3(transform.position.x + h * speed, transform.position.y, transform.position.z + v * speed);
        Vector3 vec = Vector3.zero;
        transform.position = Vector3.SmoothDamp(this.transform.position, TargetPos, ref vec, 0.02f);
4、方法4 CharacterController.SimpleMove 模拟简单移动 自动应用重力
       private float Move_Speed = 6;
       private float Rotate_Speed = 25;
       private CharacterController player;
       void Start()
       {
           player = transform.GetComponent<CharacterController>();
       }
       void Update()
       {
           Vector3 forword = transform.TransformDirection(Vector3.forward);
           player.SimpleMove(forword * v * Move_Speed);

           transform.Rotate(new Vector3(0, h * Time.deltaTime * Rotate_Speed, 0));
       }
5、方法5 CharacterController.Move 模拟复杂移动 代码模拟重力
      private Vector3 motion = Vector3.zero;
      private float Move_Speed = 6;
      private float Jump_Speed = 8;
      private float Gravity = 20;

      private CharacterController player;
      void Start()
      {
          player = transform.GetComponent<CharacterController>();
      }
      void Update()
      {
          if (player.isGrounded)
        {
            motion = new Vector3(h, 0, v);
            motion *= Move_Speed;

            if (Input.GetKeyDown(KeyCode.Space))
            {
                motion.y = Jump_Speed;
            }
        }
        motion.y -= Gravity * Time.deltaTime;
        player.Move(motion * Time.deltaTime);
      }
6、方法6 Rigidbody.AddForce 模拟物体在外力的作用下的运动状态
      Rig.AddForce(new Vector3(h, 0, v) * 5);  
7、方法7 Rigidbody.velocity 模拟物体以某个速度向某个方向移动
      Rig.velocity = Vector3.up * 3;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值