unity3d 如何用C#代码改变模型的大小

我用的这个代码报错了,应该用哪个呢??????... 我用的这个代码报错了,应该用哪个呢?????? 展开
 我来答
百度网友96ffcf7
推荐于2017-12-16 · 知道合伙人互联网行家
百度网友96ffcf7
知道合伙人互联网行家
采纳数:22721 获赞数:118724
从事多年网络方面工作,有丰富的互联网经验。

向TA提问 私信TA
展开全部
Unity3D展示必用的动态改变模型大小与方向。先在场景内放置一个cube,设置一个guiskin,并附上中文字体。将Code保存为js,赋给cube。
public var mySkin:GUISkin;
var windowRect = Rect (0, 20, 200 ,150);
var SliderScaleValue:float = 0.0;
var SliderXValue:float = 0.0;
var SliderYValue:float = 0.0;
var SliderZValue:float = 0.0;
var SliderWindowRect = Rect(80,200,200,150);
var mCube:GameObject;
var xRotation:float;
var yRotation:float;
var zRotation:float;
var wenzi : String;
function Start(){
mCube = GameObject.Find(“Cube”);
//print(mCube.transform.lossyScale + ” — ” + mCube.transform.localScale);
SliderScaleValue = mCube.transform.localScale.x;
}
function Update () {
}
function OnGUI () {
GUI.skin = mySkin;
SliderWindowRect = GUI.Window(1,SliderWindowRect,CreateWindow,wenzi);
}
function CreateWindow(windowID : int){
GUI.skin = mySkin;
GUI.Label(Rect(10,20,50,20),”缩放”);
SliderScaleValue = GUI.HorizontalSlider (Rect(60,25,120,20),SliderScaleValue,0,500);
//设置汽车的scale
mCube.transform.localScale = Vector3(SliderScaleValue,SliderScaleValue,SliderScaleValue);
GUI.Label(Rect(10,50,50,20),”旋转X”);
SliderXValue = GUI.HorizontalSlider (Rect(60,55,120,20),SliderXValue,0,360);
//设置汽车的xRotation
if(xRotation != SliderXValue){
mCube.transform.rotation = Quaternion.Euler(SliderXValue,yRotation,zRotation);
xRotation = SliderXValue;
}
GUI.Label(Rect(10,80,50,20),”旋转Y”);
SliderYValue = GUI.HorizontalSlider (Rect(60,85,120,20),SliderYValue,0,360);
//设置汽车的yRotation
if(yRotation != SliderYValue){
mCube.transform.rotation = Quaternion.Euler(xRotation,SliderYValue,zRotation);;
yRotation = SliderYValue;
}
GUI.Label(Rect(10,110,50,20),”旋转Z”);
SliderZValue = GUI.HorizontalSlider (Rect(60,115,120,20),SliderZValue,0,360);
//设置汽车的zRotation
if(zRotation != SliderZValue){
mCube.transform.rotation = Quaternion.Euler(xRotation,yRotation,SliderZValue);;
zRotation = SliderZValue;
}
GUI.DragWindow (Rect (0,0,10000,10000));
}
shuaimu
高粉答主

2024-10-14 · 每个回答都超有意思的
知道小有建树答主
回答量:377
采纳率:70%
帮助的人:13.7万
展开全部
在Unity中,Cube1.transform.localScale.x = 0.5f 这行代码会报错,原因是 localScale 是一个 Vector3 类型的属性,而 Vector3 的属性(如 x, y, z)是只读的。
你不能直接对 localScale.x 进行赋值。
要修改物体的缩放,你需要先获取整个 localScale,然后修改它的某个分量,最后再将其赋值回去。
正确的写法如下:
```
Vector3 scale = Cube1.transform.localScale;
scale.x = 0.5f; // 修改x分量
Cube1.transform.localScale = scale; // 将修改后的值赋回去
```
或者直接new一个Vector3变量直接赋值,如:
```
Cube1.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
Cube2.transform.localScale = new Vector3(0.5f, 0.5f, 0.5f);
```
这样就可以正确地改变物体的缩放了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
love哆啦A梦sky
2019-12-13 · 超过20用户采纳过TA的回答
知道答主
回答量:128
采纳率:0%
帮助的人:38.6万
展开全部
=new Vector3();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式