将脚本指定给角色总是出错,郁闷
初学者按照这本书第三章学第3人称射击游戏按教程做的,然后按教程步骤把脚本指定给角色,总是提示错误
按play运行,提示如下
初学中,无法解决,请大侠们指教!
怕自己脚本输入出错 ,又将该书光盘上脚本文件复制到我的脚本了,。。。真是没理解是怎么回事出错了 贴脚本看看 using UnityEngine;
using System.Collections;
public class Player : MonoBehaviour {
public float m_speed =1;
protected Transform m_transform;
// Use this for initialization
void Start () {
m_transform = this.transform;
}
// Update is called once per frame
void Update () {
//纵向移动
float movev = 0;
//水平移动距离
float moveh = 0;
//按上键
if ( Input.GetKey( KeyCode.W ) )
{
movev -= m_speed*Time.deltaTime;
}
//按下键
if ( Input.GetKey( KeyCode.S ) )
{
movev += m_speed*Time.deltaTime;
}
//按左键
if ( Input.GetKey( KeyCode.A ) )
{
moveh += m_speed*Time.deltaTime;
}
//按右键
if ( Input.GetKey( KeyCode.D ) )
{
moveh -= m_speed*Time.deltaTime;
}
//移动
this.m_transform.Translate( new Vector3( moveh,0,movev ) );
}
}
if ( Input.GetKey( KeyCode.W ) )
是看到别人实例控制移动这么写
原脚本是这部分是这样
if ( Input.GetKey( KeyCode.UpArrow ) )
{
movev -= m_speed * Time.deltaTime;
}
// 向下移动
if ( Input.GetKey( KeyCode.DownArrow ) )
{
movev += m_speed * Time.deltaTime;
}
//向左移动
if ( Input.GetKey( KeyCode.LeftArrow ) )
{
moveh += m_speed * Time.deltaTime;
}
// 向右移动
if ( Input.GetKey( KeyCode.RightArrow ) )
{
moveh -= m_speed * Time.deltaTime; sorry,上面贴错了 那是第二章控制飞船移动的 结果是飞船不会动 但没显示说脚本出错,可以指定给角色,但角色不会移动 可以进入play模式。
以下才是fps的脚本 显示是图示的错误,指定给角色时显示有错
using UnityEngine;
using System.Collections;
public class Player : MonoBehaviour {
//组件
public Transform m_transform;
CharacterController m_ch;
//角色移动速度
float m_movSpeed = 3.0f;
//重力
float m_gravity = 2.0f;
//生命值
public int m_life = 5;
// Use this for initialization
void Start () {
//获取组件
m_transform = this.transform;
m_ch = this.GetComponent<CharacterController>();
}
// Update is called once per frame
void Update () {
// 如果生命值为0,什么也不做
if (m_life <= 0)
return;
Control();
}
void Control()
{
float xm = 0, ym = 0, zm = 0;
//重力运动
ym -= m_gravity*Time.deltaTime;
//上下左右运动
if (Input.GetKey("W")){
zm += m_movSpeed * Time.deltaTime;
}
else if (Input.GetKey("S")){
zm -= m_movSpeed * Time.deltaTime;
}
if (Input.GetKey("A")){
xm -= m_movSpeed * Time.deltaTime;
}
else if (Input.GetKey("D")){
xm += m_movSpeed * Time.deltaTime;
}
//移动
m_ch.Move( m_transform.TransformDirection(new Vector3(xm, ym, zm)) );
}
void OnDrawGizmos()
{
Gizmos.DrawIcon(this.transform.position, "Spawn.tif");
}
}
这个看不有什么错误,建议你看一下Console窗口里的的错误提示信息 错误已经找到了,很是郁闷的错误,居然是在注解上。注解//后面我是用搜狗拼音输入汉字的,我用光盘自带的脚本复制过来,就没有错误,但是他的注解是乱码的,我用搜狗拼音改了下,居然就出错了,我用微软的全拼改回去,居然有对了,郁闷了好几天问题居然是这样的,飞船也可以移动了!!!差点让我放弃继续学习{:soso_e134:} //生命值//生命值有谁碰到过这种情况吗?用两个看去一模一样注解,一个用微软全拼,一个用搜狗拼音,微软的注解可以通过,搜狗的注解居然是出错? 还有一个奇怪的现象是,我的unity3d版本,如果脚本指定角色后出错删除掉再重新建个script,一定要按下图上那个图标reset才能有效,否则搞死人
页:
[1]
2