zoukankan      html  css  js  c++  java
  • 角色控制附在物体表面运动根据表面法线方向

    private var character :CharacterController;
    private var speed =0.0;
    private var trans:Transform;
    private var targetRot:Quaternion;

     var rotationSpeed = 90 ;
     var pedalImpulse = 3.5;
     var maxSpeed = 12;
     var decayRate = 0.1;
     
    function Start()
    {
       character = GetComponent(CharacterController);
       trans= transform ;
    }

    function pedal()
    {
        speed+= pedalImpulse;
     speed = Mathf.Min(speed , maxSpeed);
    }


    function Update ()
    {
       var horizontal = Input.GetAxis("Horizontal");
       transform.Rotate(0,rotationSpeed*horizontal*Time.deltaTime,0);
      
       if(character.isGrounded && Input.GetKeyDown(KeyCode.Space))
       pedal();
      
       var moveDirection = trans.forward*speed;
       moveDirection += Physics.gravity;
       character.Move(moveDirection*Time.deltaTime);
      
       var ray = new Ray(trans.position+Vector3.up,-Vector3.up);
       var hit : RaycastHit;
       if (character.isGrounded && Physics.Raycast(ray,hit,10))
       {
           var targetRight = Vector3.Cross(hit.normal,trans.forward);
        var targetForward = Vector3.Cross(targetRight,hit.normal);
        targetRot = Quaternion.LookRotation(targetForward,hit.normal);
       }
      
       trans.rotation = Quaternion.Slerp(trans.rotation,targetRot,5*Time.deltaTime);
      
       if(character.isGrounded)
       {
          if(speed<0.3)
       speed=0;
       else
       {
          speed -= decayRate*Time.deltaTime*speed;
       }
         
       }
    }

  • 相关阅读:
    排序应用于链表
    线性时间排序算法
    排序算法
    2017计蒜客蓝桥杯模拟赛5
    第六届河南省赛 River Crossing 简单DP
    POJ 3061 Subsequence 尺取法 POJ 3320 Jessica's Reading Problem map+set+尺取法
    天梯赛 L2-020. 功夫传人 BFS
    天梯赛 L2-019. 悄悄关注 map
    配置在Chrome,Firefox中打开
    http响应状态码大全
  • 原文地址:https://www.cnblogs.com/softimagewht/p/2062320.html
Copyright © 2011-2022 走看看