点击物体,①在inspector>Add Component>Physics>Rigidbody(这个是为物体设置重力)/Box Collider(这个是个物体设置一个屏障,使物体遇墙不出 注:在实践过程中,物体出墙,可能是由于速度过快,未能识别,因此在实践过程时,注意在代码中调整物体速度)
下边图片是物体前后上下移动的代码图片,输入代码后要保存,将代码赋予物体,然后试运行,注意调速度(数字越小,速度越小)需要停止运行试验(有时候跳过速度没有阻止撞墙,就是因为没有停止运行,因此速度没有改变),然后再调整速度时需要选中物体,在代码myspeed中调速度(可以在打的代码文件中调速,也可在inspector中找寻设置)。(关于移动目前有两种代码方法)
此图三角是运行与停止的开关(现在是运行状态)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class move : MonoBehaviour
{
// 控制物体用WASD前后左右移动
public float MoveSpeed = 50f;
void Update()
{
if(Input .GetKey (KeyCode.W))
{
this.transform.Translate(new Vector3(0, 0, 1 * MoveSpeed * Time.deltaTime));
}
if (Input.GetKey(KeyCode.S))
{
this.transform.Translate(new Vector3(0, 0, -1 * MoveSpeed * Time.deltaTime));
}
if (Input.GetKey(KeyCode.A))
{
this.transform.Translate(new Vector3(-1 * MoveSpeed * Time.deltaTime,0, 0));
}
if (Input.GetKey(KeyCode.D))
{
this.transform.Translate(new Vector3(1 * MoveSpeed * Time.deltaTime,0, 0));
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RoleControl : MonoBehaviour
{
public float Movespeed = 10f;//主角移动速度控制
void Start()
{
}
void Update()
{
ControlMove();//用来控制主角移动旋转
}
void ControlMove()//用来控制主角移动旋转
{
//获取WS\AD的数值返回-1 - 1用来移动主角物体方向
float MoveX = Input.GetAxis("Horizontal");//AD
float MoveY = Input.GetAxis("Vertical");WS
this.transform.Translate(new Vector3 (MoveX, 0,MoveY)*Movespeed*Time.deltaTime);
}
}
控制物体移动代码
调速位置在inspector里找