import direct.directbase.DirectStart
from direct.task import Task
from direct.actor import Actor
import math
environ = loader.loadModel("models/environment")
environ.reparentTo(render)
environ.setScale(0.25,0.25,0.25)
environ.setPos(-8,42,0)
def SpinCameraTask(task):
angledegrees = task.time * 6.0
angleradians = angledegrees * (math.pi / 180.0)
base.camera.setPos(20*math.sin(angleradians),-20.0*math.cos(angleradians),3)
base.camera.setHpr(angledegrees, 0, 0)
return Task.cont
taskMgr.add(SpinCameraTask, "SpinCameraTask")
pandaActor = Actor.Actor("models/panda-model",{"walk":"models/panda-walk4"})
pandaActor.setScale(0.005,0.005,0.005)
pandaActor.reparentTo(render)
pandaActor.loop("walk")
run()
Sahnemizi daha önce ki eğitsellerde yüklemiştik. Kodumuz gittikçe gelişiyor şimdi ilk olarak import ettiğimiz modüllere tekrardan bakın. Ekstradan Actor modülünü import ettik. Şimdi uygulamanın son bölümüne bakın, tıpkı sahne yüklerken yaptığımız gibi bir nesne oluşturduk ve Actor.Actor fonksiyonuyla pandamızı yükledik. Şimdi aklınızda tutmanız gereken kısım loadmodel’in sabit modelleri yüklemede, Actor’ınsa hareketli animasyonlarda kullanıldığı. Bir şey hareket ediyorsa yani yeri değişiyorsa actor kullanılır. Actörü yüklerken bir python sözlüğü kullanarak dosyalarımızı isimlerle eşleştirebiliyoruz. Örneğin walk nesnesinin adresi models/panda-walk4’muş. Yerini belirleyip, render işlemini yaptıktan sonra walk animasyonunu loop ediyoruz(döngü başlatıyoruz). İşlem tamamlandıktan sonra dosyayı kaydedip çalıştırın. Yukarıda ki resimdeki pandanın yürüdüğünü göreceksiniz.