我想做的是自动让角色走到一个特定的位置,或者只是走向一个特定的方向。
using UnityEngine;
using System.Collections;
public class Ai : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
var v = Input.GetAxis("Vertical");
if(Mathf.Abs(v) > 0.1f) {
animation["Walk"].speed = v;
animation.CrossFade("Walk");
transform.position.z += v;
}
else animation.CrossFade("Idle");
}
}
速度和CrossFade不存在。
更新我尝试的内容:
using UnityEngine;
using System.Collections;
public class Ai : MonoBehaviour {
Animation animation;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
var v = Input.GetAxis("Vertical");
if(Mathf.Abs(v) > 0.1f) {
animation["Walk"].speed = v;
animation.CrossFade ("Walk");
transform.position.z += v;
}
else animation.CrossFade("Idle");
}
}
制作动画的动画全局变量。 现在动画具有属性speed和CrossFade,但现在我收到了新警告和一个新错误:
警告在线:
Animation animation;
Ai.animation' hides inherited member
UnityEngine.Component.animation&#39 ;.如果要隐藏
错误在线:
transform.position.z += v;
无法修改`UnityEngine.Transform.position'的值类型返回值。考虑将值存储在临时变量
中答案 0 :(得分:4)
因为var
代表匿名类型。它们只会在编译时解决。
正如Pieter Witvoet在评论中提到的那样,通常intellisense对隐式类型变量没有问题。
但在你的情况下,你重叠了两个属性,所以现在IDE变得困惑了。
所以现在你的intellisense没有奖励哪个类明确你的对象。
只需将var animation
替换为Animation animation
,您的intellisense就会提供所有缺失的功能和属性。
https://msdn.microsoft.com/en-us/library/bb397696.aspx
到第二个问题:
transform.position.z += new Vector3(0,0,v);
x,y和z的Vector3
属性都是只读的。