游戏蛮牛学习群(纯技术交流,不闲聊):159852603
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

首页   >   博客   >   Sunry

Unity3D 关于物体的一些简单移动方法

个人分类: Unity 学习 | 2018-10-22 22:02
      第一次,写博客 纯手打 ,页面毁了一次又一次  写了一次又一次 。感觉以后要多加练习。
写博客的目的不是为了什么,只是因为自身在学习当中发现 以前解决的问题当再一次摆在自己面前的时候会再次出现问题,所以开始写博客记录一些 自身所遇到的问题和解决方案 方便自身加深记忆

第一种 
 public float speed; // 移动速度
 public float rotateSpeed;//旋转速度 

void Update ()
 {
 if (Input.GetKey(KeyCode.W)) 
 { 
 transform.Translate(Vector3.forward * Time.deltaTime * speed,Space.Self); //平移,后面可留空效果同Self,根据自身轴移动, World根据世界轴移动
 } 
 if (Input.GetKey(KeyCode.S))
{
 transform.Translate(Vector3.back * Time.deltaTime * speed);
 } 
 if (Input.GetKey(KeyCode.A)) 
 {
 transform.Rotate(Vector3.down * Time.deltaTime * rotateSpeed);// 应用一个欧拉角的旋转角度,eulerAngles.Y度围绕Y轴,负方向旋转 
 } 
 if (Input.GetKey(KeyCode.D))
 {
 transform.Rotate(Vector3.up * Time.deltaTime * rotateSpeed);
 }
 }
第二种
void Move()
{
  //控制移动 
 float h = Input.GetAxis("Horizontal"); 
 float v = Input.GetAxis("Vertical");
 transform.Translate(new Vector3(h, 0, v) * speed*Time.deltaTime);//平移 
 //GetComponent<Rigidbody>().MovePosition(transform.position + new Vector3(h, 0, v) * speed * Time.deltaTime);// 获取刚体组件来进行刚体移动  
//第三种移动方式
 // float x = h*speed 
// float z = v*speed 
// x = x+transform.position.x
 //x= Mathf.Clamp(x,-2.3,2.3) // 对移动进行限定适合一些有屏幕限制的移动
 z = z + transform.position.z
 z= Mathf.Clamp(y,-4.5,0)//限制z轴的上下限 
//transform.position= new Vector3(x,transform.position.y,z)
 } 

//控制动画 private Animator anim; 
void Play()
{
 // 播放动画方法
 //if (h != 0 || v != 0) //判定是否移动 
 //{
 // anim.SetBool("Move", true); 
 //}
 //else 
 //{
 // anim.SetBool("Move", false); 
 //}
}

 public void MoveInRightJoyStick(Vector2 weizhi) //设置朝向 
 {
 if (weizhi.y != 0 || weizhi.x != 0) 
 {
 //设置角色的朝向(朝向当前坐标+偏移量) 
 transform.LookAt(new Vector3(transform.position.x + weizhi.x, transform.position.y, transform.position.z + weizhi.y)); 
 }
 }
 
第三种 需要在物体上面加角色控制器 Character Controller组件
public float speed = 6.0F; //移动速度 
 public float jumpSpeed = 8.0F;//跳跃的高度 
 public float gravity = 20.0F; //阻尼 阻力下落 
 private Vector3 moveDirection = Vector3.zero; 

 void Update()
 {
 CharacterController controller = GetComponent<CharacterController>();//获取角色控制器 
 if (controller.isGrounded)
 { 
 moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));//获取关于控制角色增量的三维向量相当于前面两种方法获取的增量 moveDirection = transform.TransformDirection(moveDirection);//这一句话我也并没有太多理解,查了查是从局部空间向世界空间转换方向 
moveDirection *= speed;
 if (Input.GetButton("Jump")) 
 moveDirection.y = jumpSpeed; 
 }
  moveDirection.y -= gravity * Time.deltaTime;
 controller.Move(moveDirection * Time.deltaTime);
//CharacterController.Move一个更加复杂的移动函数,每次都绝对移动。 
 }
  目前来说对于PC端 就发现了这些移动物体的方式 !   有更完善的方式方法的请各位指教!!!
0 0

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册帐号

个人分类

标签

阅读排行

评论排行

推荐博客

最新博客

关闭

站长推荐 上一条 /1 下一条

返回顶部