您的位置:首页 > 移动开发 > Unity3D

Unity官方教程—space shooter练习日记之脚色移动

2017-09-27 21:36 405 查看
         从官方下载下来的资源,代码通过自主视频获得,还是得感谢下58

        首先是传统的虚拟轴的使用        float moveHorizontal = Input.GetAxis("Horizontal");

                                                                float moveVertical = Input.GetAxis("Vertical");

这里的Horizontal以及Vertical可以在unity中的Edit---project seeting ----Input找到,不止是有预设的xyz轴变化,还有Jump,同时支持自我定义。

接下来的方法有很多种,这是本次试用的 Vector3 movement = new vector3(moveHorizontal , 0.0f , move Vertical);

                                                                         GetCompent<Rigdibody>().velocity = movement*speed;

上面的这些已经有过多次使用经历,而接下来的才是今天最大的收获

[System.Serializable]

    public class Bondary

    {

        //定义边界值

        public float xMin;

        public float xMax;

        public float zMin;

        public float yMax;

}

public Bondary bondayr

这里将已经定义好的公共变量x和z轴的极限定义为了类,就使用来说复杂程度增高了,但其整洁的写法使得它不得不被使用,便于检查,整理。

最后一步,使得玩家在没有物体阻拦的情况下依然不会超过边界

Getcompent<Rigidbody>().position = new Vector3(Mathf.Clamp(Getcompent<Rigidbody>().position.x,bondary.xMin,bondary.xMax) , 0.0f, Math.Clamp(Getcompent<Rigidbody>().position.z , bondary.zMin , bondary.zMax));

这里的书写量较大,为纯手打,建议以官方视频为准

最后说一点,注意在unity中对于max以及min值的设置,如果正负错误会出现鬼畜的情况。

祝我们成功

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMove : MonoBehaviour {
[System.Serializable]
public class Bondary
{
//定义边界值
public float xMin;
public float xMax;
public float zMin;
public float yMax;
}
public float speed;
public Bondary bondary;
// Use this for initialization
void FixedStart () {

}

// Update is called once per frame
void Update () {
//角色移动
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);

GetComponent<Rigidbody>().velocity = movement * speed;
//使玩家不超越边界值
GetComponent<Rigidbody>().position = new Vector3(Mathf.Clamp(GetComponent<Rigidbody>().position.x,bondary.xMin,bondary.xMax), 0.0f,
Mathf.Clamp(GetComponent<Rigidbody>().position.z,bondary.zMin,bondary.yMax));

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: